SóProvas



Questões de Algoritmos


ID
1891
Banca
NCE-UFRJ
Órgão
BNDES
Ano
2005
Provas
Disciplina
Algoritmos e Estrutura de Dados
Assuntos

Considere uma árvore binária de busca com n elementos e altura mínima. O tempo de acesso a qualquer elemento desta árvore é da ordem de:

Alternativas
Comentários
  • Está questão deveria ser anulada, pois todas as alternativas estão corretas.
    A notação O significa o seguinte:
    Dadas duas funções positivas quaisquer, f e g
    f(n) = O(g(n)) se e somente se
    Existe um número real K e um número real n0 tal que f(n) <= K . g(n) para todo n > n0.
    Em palavras: para n suficientemente grande a função g multiplicada por uma constante sempre será um limite superior de f.
    Como já foi explicado acima, o tempo de acesso no caso do exercício é da ordem O(log n).
    O problema é que a função:
    1: f(n) = n é um limite superior de g(n) = log n, pois para n grande n > log n, logo log n = O(n) e a letra A é correta.
    2: f(n) = n2 é um limite superior de g(n) = log n, pois para n grande n2 > log n, logo log n = O(n2) e a letra B é correta.
    3: log n = O(log2 n) e a letra C é correta.
    4: log10 n = log2n/log210 (propriedade de logaritmos) como 1/log210 é uma constante log10 n = K log2n, log10n = O(log2n) logo a letra D é correta. Isso é importante para perceber que não importa a base do logaritmo nas notações Omega, Theta e O.
    5: f(n) = nn é um limite superior de g(n) = log n, pois para n grande nn > log n, logo log n = O(nn) e a letra E é correta.
  • A questão deveria ser anulada porque não define o que é altura mínima. Caso a árvore fosse uma AVL ou Vermelho e Preto a resposta estaria correta. No entanto, poderia ser por exemplo esta árvore [1] -> [2] -> [3] -> [4] -> [5] - > [6] e assim por diante. Neste caso o tempo seria O(n).

  • c-

    In a binary search tree, the left child of a node has a lesser value than the parent whereas the right child has a greater value than the parent. If there are n nodes in a binary search tree, the maximum height is n-1 and minimum height is ceil(log2n).

    https://www.geeksforgeeks.org/relationship-number-nodes-height-binary-tree/


ID
2287
Banca
NCE-UFRJ
Órgão
TRE-RJ
Ano
2001
Provas
Disciplina
Algoritmos e Estrutura de Dados
Assuntos

Um analista especificou os dados que devem constar de um pedido de cliente. Um item de pedido (P) deve conter o nome do cliente (N), seu CGC (opcional), a data do pedido e uma lista de itens, contendo pelo menos um item. Cada item da lista deve conter obrigatoriamente o código do produto (CP) ,sua quantidade (Q) e seu preço unitário (PU).

A descrição formal de um pedido é:

Alternativas
Comentários
  • Tente lembrar de "expressão regular" para resolver a questão.N = sempre vai aparecer.() = torna o valor opcional.{} = valor que vai aparecer.1 = define que vai aparecer pelo menos uma vez.+ = concatena

ID
5434
Banca
CESGRANRIO
Órgão
Petrobras
Ano
2006
Provas
Disciplina
Algoritmos e Estrutura de Dados
Assuntos

A respeito de funções e algoritmos, assinale a afirmativa correta.

Alternativas

ID
6223
Banca
CESGRANRIO
Órgão
AL-TO
Ano
2005
Provas
Disciplina
Algoritmos e Estrutura de Dados
Assuntos

Dadas as variáveis numéricas A e B, contendo os valores 2 e 6, respectivamente; a variável L, contendo o literal FALSO; e a variável lógica V, contendo o valor lógico verdadeiro, assinale a expressão lógica cujo resultado possui valor lógico falso.

Alternativas
Comentários
  • Basta resolver usando uma tabela verdade onde:TABELA VERDADE E(Somente verdadeira quando as duas partes forem verdadeiras)V e V = VV e F = FF e V = FF e F = FTABELA VERDADE OU(Somente Falsa quando as duas partes forem falsas)V ou V = VV ou F = VF ou V = VF ou F = F................a)A2 > B ou VF ou VVb)A > B ou L = "FALSO"F ou VVc) A < B e L = "LITERAL"V e FF <---------------------------Resposta Corretad) A > B e V ou L = "FALSO"F e V ou VF ou VVe)A - B < 2 e L ? "VERDADEIRO" e VV e V e VV e VV
  • Cara discordo do teu gabarito
    A > B e V ou L = "FALSO"
    respeitando-se as prioridades temos:
    (A > B) e (V ou L = "FALSO")
        F      e  V ou F
        F      e     V  = F ... na minha opiniao essa questao tem duas respostas... C e D, chutei c e acertei, mas se alguem consegue enxergar que a letra d nao tem valor logico = Falso e puder me exlciara eu agradeco
  • A premissa A > B e V é falsa enquanto a premissa L = "FALSO" é verdadeira (pois L é uma string de valor "FALSO", não uma variável booleana). Sendo F ou V = V, então a expressão da letra d é verdadeira.
     
    A letra c está correta porque A < B é verdadeiro, porém L = "LITERAL" é falso pois o valor de L é a string "FALSO". Sendo V e F = F, a expressão da letra c é falsa.

    Nesse caso, nem se faz necessária a tabela-verdade, basta lembrar as regras das operações lógicas.

ID
16849
Banca
CESPE / CEBRASPE
Órgão
TRE-AL
Ano
2004
Provas
Disciplina
Algoritmos e Estrutura de Dados
Assuntos

A atividade de programação requer conhecimento técnico de
diversas formas de algoritmos e estruturas de controle e de dados.
Acerca dos elementos técnicos da atividade de programação,
julgue os itens a seguir.

Um procedimento correto para determinar o sucessor de um
nodo N em uma árvore de busca binária é o seguinte:
primeiro, localiza-se o nodo N; em seguida, com o ponteiro
direito de N, obtém-se o nodo ND e, a partir de ND, faz-se
o percurso de todos os possíveis ponteiros esquerdos até que
seja alcançado o fim da ramificação, cujo nodo final é o
sucessor de N.

Alternativas
Comentários
  • Aqui temos um comentário acerca disso: http://equipe.nce.ufrj.br/adriano/c/apostila/arvore.htmEsse caso envolve tentar remover um nó com dois filhos em uma árvore binária.Este nó (sucessor) é um descendente que está na subárvore da direita do nó e corresponde ao nó mais à esquerda desta árvore. Ele não tem filhos à esquerda e a sua árvore à direita pode ser movida para o lugar de s.
  •          m
        /           \
       i               q
     /   \          /       \
    h    k        o        s
         /  \     /  \      /
        j    l   n   p    r

    Nesta árvore temos um exemplo em que este algoritmo não funciona. Se buscarmos "n" e utilizarmos seu ponteiro direito para obter seu sucessor nada encontraremos, pois o mesmo é nulo, seria preciso retornar um nível para encontramos "o".

    Para que o algoritmo esteja completo é preciso, caso o ponteiro direito seja nulo, retornar ao nó pai e esté será seu sucessor. Caso não haja pai (se "n" for o nó raiz da árvore) não há sucessor.

    Desta forma a questão deveria estar "Errada"
  • A questão está correta. 

    Em uma árvore de busca binária podemos ter uma regra de inserção que seguem duas regras:

    - os elementos da subárvore a direita do nó N possuem valor maior que N
    - os elementos da subárevore à equerda do nó N possuem valor menor ou igual que N. 

    desse modo, para acharmos o valor sucessor de N, devemos caminhar para a subárvore a direita de N e a partir dela percorrermos a subárvore esquerde sucessivamente até encontrarmos o fim dela. Esse elemento será chamado de elemento sucessor. 

    por exemplo. 

                                                  10
                            5                                  20                           
                     3            8                  16              30
                                                  12        17
                                                    
    Nessa árvore, o elemento sucesso de 10 é 12. E o elemento sucesso de 20 é 30. 
  • Erick,

    Usando o algoritmo descrito pela banca e o seu exemplo, por favor, qual o sucessor de 17? =)

    Concordo com o João Guedes Júnior, esta questão está ERRADA.

ID
17134
Banca
CESPE / CEBRASPE
Órgão
TSE
Ano
2007
Provas
Disciplina
Algoritmos e Estrutura de Dados
Assuntos

Acerca da representação e do armazenamento de informações, assinale a opção correta.

Alternativas
Comentários
  • Letra a: Correta - http://pt.wikipedia.org/wiki/Hash.
    Como a seqüencia do hash é limitada, muitas vezes não passando de 512 bits, existem colisões (seqüências iguais para dados diferentes). Quanto maior for a dificuldade de se criar colisões intencionais, melhor é o algoritmo.

    Letra b: Errada - Na verdade o algoritmo First-Fit é utilizado para alocação dinâmica de processos na memória:

    Fragmentação
    Fragmentação acaba com a performance: depois de algum tempo uma grande parte da memória fica inutilizada.

    Memória fica cheia de ``buracos''
    Estratégias para ``atacar'' o problema:

    First-fit: Escolha o primeiro buraco onde o novo processo caiba.

    Letra c: errada

  • b - errada. Não basta unir as áreas livres. É preciso unir as áreas preenchidas seguindo a lógica da qual fazem parte em um arquivo, desfragmentando-o.
  • Letra C - Errada pois o arquivo precisa estar ordenado para se realizar uma busca binária. Quanto ao custo de inserção não sei afirmar.

    Letra D - Se existe um índice, pra que ordenar um arquivo, não é mesmo?
  • A alternativa B) está incorreta porque o que ela afirma é válido apenas para combater a fragmentação externa.


ID
17842
Banca
CESGRANRIO
Órgão
BNDES
Ano
2008
Provas
Disciplina
Algoritmos e Estrutura de Dados
Assuntos

Se a complexidade de tempo de um algoritmo é da ordem de Θ (n log n), é correto afirmar que esse algoritmo também é

Alternativas
Comentários
  • Se tivermos uma lista de N números e quisermos encontrar algum deles assume-se que a complexidade no melhor caso é f(N) = ? (1), pois assume-se que o número estaria logo na cabeça da lista. Na questão o f(N) é f(n log n), portanto, ? (n log n)
  • ômega(g(n)) --> melhor casoTheta(g(n)) --> caso médioO(g(n)) --> pior casoSe eu sei que um algoritmo é do tipo ???(nlog(n)), posso afirmar que esse é também um algoritmo de Theta(nlog(n)). Ele também pode ser um algortimo de caso médio ou pior caso, porém mesmo que ele seja um algoritmo de caso médio ou pior caso, necessariamente ele deve também ser um algoritmo de melhor caso desse mesmo tipo. É um problema de raciocínio lógico e envolve o conhecimento das notações de melhor, médio e pior caso.
  • Essa questao deve ser feita por exclusão. A unica opcao que podemos ter como correta é a letra C
    Lembrando que Teta é Caso Medio; Omega é Melhor Caso e "o" maiusculo o Pior Caso.
    E a ordem crescente de compelxidade é: O(1); O(logn); O(n); O(nlogn); O(n^2) ...

    a) um algoritmo nao pode ter dois casos medios diferentes
    b) o melhor caso de um algoritmo nao pode ter complexidade maior que o caso medio
    c) podemos afirmar isso.
    d) o pior caso de um algoritmo nao pode ter complexidade melhor que o caso medio
    e) o pior caso de um algoritmo nao pode ter complexidade melhor que o caso medio
  • COMENTARIO DA 5


ID
27667
Banca
CESGRANRIO
Órgão
Petrobras
Ano
2004
Provas
Disciplina
Algoritmos e Estrutura de Dados
Assuntos

A respeito de funções e algoritmos, assinale a afirmativa correta.

Alternativas
Comentários
  • a) Errado. O limite representado por ômega indica o melhor caso de sua execução. Indica a execução das instruções que só de depende do problema e não do algoritmo.
    b) Não sei...
    c)Errado. O é uma notação assintótica e não matemática. O O não pode ser elevado ao quadrado.
    d) Errado. Na soma prevalece o valor máximo, logo f(5*N^3 + 2*N^2) = O(n^3).
    e)Não sei o que é um limite superior justo...
  • Apenas acrescentando:b) Definição da Notação OSejam duas funções inteiras no domínio dos reais g(n) e f(n). Dizemos que g(n) é O(f(n)) se existem duas constantes positivas c e n0, tal que :1. 0 <= g(n) <= c.f(n), para todo n>= n0.Ou seja, podemos concluir que|g(n)| <= c.|f(n)|
  • e) O conceito de limite superior justo está ligado à notação Theta:

    Se f e g têm limite superior justo => f é Theta(g())

    Isso significa que f é O(g()) e f é Omega(g()). Além disso, g é O(f()) e g também é Omega(f()).
     
    Ou seja, cada uma destas funções é limite superior e inferior para a outra.
     
    A questão afirma que se duas funções possuem limite superior justo, uma é limite superior da outra, o que está incompleto, mas correto.
  • Uma função f(n) domina assintoticamente outra função g(n) se existem duas constantes positivas c e m tais que, para n ≥ m , temos |g(n)| c|f(n)|.

     

    Cobrar isso é brincadeira... 

  • Criei um grupo para quem quer ser aprovado em concursos rapidamente

    Aqui um ajuda o outro de graça e material de varios cursos bem selecionados

     

    Link do grupo (CopieCOLE) ---->  https://www.facebook.com/groups/ConcurseirosReciprocos/

  • Fui por eliminação.


ID
28579
Banca
CESGRANRIO
Órgão
DECEA
Ano
2006
Provas
Disciplina
Algoritmos e Estrutura de Dados
Assuntos

Seja T um texto e C, uma cadeia de caracteres, onde n e m correspondem ao tamanho de T e C, respectivamente. Sobre a busca de C em T, é correto afirmar que o algoritmo de:

Alternativas
Comentários
  • a) Força bruta sempre é o pior desempenho e não usa hash.b) KNP tem um algorítmo dividido em duas porções, com complexidades respectivas O(n) e O (k) e a complexidade do algorítmo é O (n+k)c) KNP não faz da direita para a esquerda e sim da esquerda para a direita.d) O pior caso do RK é O(nm)
  • Apenas estendendo o comentário anterior:

    a) Força bruta sempre é o pior desempenho e não usa hash. Sua complexidade no pior caso é de O(nm).

    b) Knuth-Pratt-Morris tem um algorítmo dividido em duas porções, com complexidades respectivas O(n) e O (k) e a complexidade do algorítmo é O (n+k). No pior caso aproxima-se à força-bruta O(mn)

    c) Knuth-Pratt-Morris não faz comparações da direita para a esquerda e sim da esquerda para a direita. Boyer-Moore é que faz comparações da direita para a esquerda;


    d) A complexidade do Rabin-Karp é, em média, de O(n+m) a O(nm). No pior caso é de O( (n – m +1)m ), praticamente o mesmo caso de Boyer-Moore para o pior caso.

    e) Boyer-Moore utiliza heurísticas conhecidas como a “heurística-do-bom- sufixo” e a “heurística-do-mau-caractere”. (CORRETO)

  • De quem bibiliografia vocês tiraram esses autores de algorítmos?
  • A abordagem de Boyer-Moore é tentar combinar o último caractere do padrão em vez do primeiro com a suposição de que, se não houver correspondência no final, não é necessário tentar combinar no início. Isso permite "grandes saltos", portanto o BM funciona melhor quando o padrão e o texto que você procura são semelhantes a "texto natural" (isto é, inglês)

     

    Knuth-Morris-Pratt procura as ocorrências de uma "palavra" W dentro de uma "string de texto" principal, empregando a observação de que, quando ocorre uma falta de correspondência, a própria palavra incorpora informações suficientes para determinar onde a próxima partida poderia começar, ignorando assim a re-examinação de caracteres anteriormente correspondentes. (Fonte: Wiki)

    Isso significa que o KMP é mais adequado para conjuntos pequenos como o DNA (ACTG)

     

    https://pt.stackoverflow.com/questions/231105/qual-%C3%A9-a-diferen%C3%A7a-principal-entre-os-algoritmos-knuth-morris-pratt-e-boyer-moor

  • Controle Externo - Luiz Henrique Lima (o mais utilizado)


ID
43708
Banca
CESGRANRIO
Órgão
Petrobras
Ano
2008
Provas
Disciplina
Algoritmos e Estrutura de Dados
Assuntos

Sobre o algoritmo de ordenação heapsort, assinale a afirmação correta.

Alternativas
Comentários
  • Algoritmo Heapsort: tem tempo de execução de um algoritmo de ordenação por intercalação, e faz as suas operações localmente, sempre apenas um número constante de elementos é armazenados fora da estrutura de dados, como é feito o algoritmo por inserção. Mas o que ele tem de interessante é a forma que ele arranja os dados para depois ordená-los, ele utiliza uma estrutura chamada de heap ou monte, que é uma arvore binária que é extremamente importante para vários conceitos e problemas computacionais, pois depois de ordenados os dados, podemos, por exemplo, saber em que nível da árvore se encontra determinado item, operações sobre arvores binárias são conceitos muito importantes para outras estruturas como grafos.
  • O herap sort utiliza a ordenação por seleção o seu desempenho no pior caso é melhor que o desempenho no pior caso do quick sort. o hearp sort apresenta em todos os casos ( melhor, médio e pior) o desempenho de O( n log n) e o quick sort no pior caso apresenta O(n2). A ordenação de insert sort no pior caso apresenta a ordenação O(n2).
  • Basicamente o Heapsort insere todos os elementos em uma árvore binária. Em seguida vai removendo um a um os elementos da árvore já ordenados. A inserção em árvore binária já contempa o ordenamento implícito.

    Quadro comparativo
    http://screencast.com/t/MjA0NzFlN

    Simulação
    http://www.schau-online.de/projects/heapsort/

  • Seleção em Árvore (HeapSort): Utiliza uma estrutura de árvore binária para
    a ordenação. A ordenação é realizada em duas fases:1ª fase:
    Monta-se uma árvore binária (heap) contendo todos os elementos do
    vetor de forma que o valor contido em qualquer nodo seja maior do que
    os valores de seus sucessores. A árvore binária é estruturada no próprio
    vetor da seguinte forma:
    a. sucessor à esquerda de i : 2i (se 2i < n)
    b. sucessor à direita de i : 2i + 1 (se 2i + 1 < n)
    Transformação da árvore num heap: é realizada do menor nível até a raiz,
    trocando-se cada nodo com o maior de seus sucessores imediatos.
    Repete-se este processo até cada nodo ser maior que seus sucessores
    imediatos.
    2ª fase:
    Após a formação do heap segue-se a fase de classificação propriamente
    dita, na qual o valor que está na raiz da árvore (maior valor contido na
    árvore) é colocado na sua posição correta, trocando-o com o elemento
    de maior índice da árvore (a árvore fica com 1 elemento a menos). Este
    novo elemento colocado na raiz pode violar a propriedade do heap, de
    modo que deve-se restaurar o heap novamente. Este procedimento é
    repetido até que a árvore fique com um único elemento.

  • Pessoal deêm uma conferida no vídeo do youtube, uma animação de como funciona o heap:
    http://www.youtube.com/watch?v=0VzYHiMXZq0&feature=related
  • b) A estrutura de dados que utiliza, chamada heap, pode ser interpretada como uma árvore binária.

  • A estrutura de dados heap, que é eficiente para a implementação do método de ordenação heapsort, consiste em uma árvore binária completa e sua implementação mais simples ocorre na forma de array.

     

    Letra B

  • Gabarito B

    Heapsort - utiliza uma estrutura de dados chamada heap, para ordenar os elementos à medida que os insere na estrutura. Assim, ao final das inserções, os elementos podem ser sucessivamente removidos da raiz da heap, na ordem desejada, lembrando-se sempre de manter a propriedade de max-heap.
    A heap pode ser representada como uma árvore ou como Vetor.

     

     

     

     

    "Retroceder Nunca Render-se Jamais !"
    Força e Fé !
    Fortuna Audaces Sequitur !

  • b-

    In computer science, a heap is a tree-based data structure which is an almost complete tree that satisfies the heap property: in a max heap, for any given node C, if P is a parent node of C, then the key (the value) of P is greater than or equal to the key of C. In a min heap, the key of P is less than or equal to the key of C. The node at the "top" of the heap (with no parents) is called the root node.

    https://en.wikipedia.org/wiki/Heap_(data_structure)


ID
56656
Banca
CESPE / CEBRASPE
Órgão
ANAC
Ano
2009
Provas
Disciplina
Algoritmos e Estrutura de Dados
Assuntos

Julgue os itens que se seguem, com relação a conceitos de
construção de algoritmos.

Na construção de um algoritmo, utilizam-se estruturas de repetição para que um bloco de comandos seja executado várias vezes. Todos os tipos de estrutura de repetição permitem que o bloco de comandos seja executado zero, uma ou mais vezes, de acordo com uma condição que será avaliada a cada iteração.

Alternativas
Comentários
  • do{ }while<>Este tipo de estrutura NÃO PERMITE que o bloco seja executado zero vezes. O bloco SEMPRE será executado pelo menos 1 vez. Isso torna falsa a questão, pois ela fala que TODOS os tipos permitem zero, uma ou mais interações no loop.Ok, é pegadinha. Poderíamos pensar que "zero, uma ou mais vezes" está correto pois é uma disjunção. Se fosse "zero, uma e mais vezes" teríamos um erro. Mas CESPE é CESPE!
  • O erro está em dizer que " Todos os tipos de estrutura de repetição permitem que o bloco de comandos seja executado zero, uma ou mais vezes, de acordo com uma condição que será avaliada a cada iteração." O Do While é executado pelo menos uma vez.

ID
56659
Banca
CESPE / CEBRASPE
Órgão
ANAC
Ano
2009
Provas
Disciplina
Algoritmos e Estrutura de Dados
Assuntos

Julgue os itens que se seguem, com relação a conceitos de
construção de algoritmos.

Na passagem de parâmetro por valor, o parâmetro formal tem seu valor inicializado pelo valor do parâmetro real. Por esse motivo, o parâmetro real nunca é alterado. O seu valor se mantém inalterado depois que o subprograma termina a execução.

Alternativas
Comentários
  • Passagem por valor: cria-se uma instancia local da variavel. O valor original não se altera. Ao término do método, o valor antigo estará intacto.Passagem por referência: toda alteração feita sobre o valor, dentro do método, afeta diretamente o valor original. Ao término do método o valor original tera sido alterado.

ID
56662
Banca
CESPE / CEBRASPE
Órgão
ANAC
Ano
2009
Provas
Disciplina
Algoritmos e Estrutura de Dados
Assuntos

Julgue os itens que se seguem, com relação a conceitos de
construção de algoritmos.

Um array é um agregado, possivelmente heterogêneo, de elementos de dados. Nele, um elemento individual é identificado por sua posição em relação ao primeiro.

Alternativas
Comentários
  • Em um array os elementos são identificados diretamente através de um índice.Em uma lista encadeada é que identificamos os elementos a partir do primeiro elemento (cabeça da lista)
  • o termo possivelmente heterogênio é que invalida a questão. Por definição o array, na programação estruturada, é homogênio. Ou seja, todos elementos tem o MESMO TIPO. Você não pode colocar uma string num array de inteiro. O resto esta certo, pois se a posição do elemento do array é a décima seu indeci é [10], isso é uma identificação em relação ao primeiro elemento do array.
  • Em programação de computadores, um array, também conhecido como vector (para arrays uni-dimensionais) ou matriz (para arrays bi-dimensionais), é uma das mais simples estruturas de dados. Os arrays mantêm uma série de elementos de dados, geralmente do mesmo tamanho e tipo de dados. Elementos individuais são acessados por sua posição no array. A posição é dada por um índice, também chamado de subscrição. O índice geralmente utiliza uma seqüência de números inteiros, (ao contrário de um array associativo) mas o índex pode ter qualquer valor ordinal. Alguns arrays são multi-dimensionais, significando que eles são indexados por um número fixo de números inteiros, por exemplo, por um seqüência (ou sucessão) finita de quatro números inteiros. Geralmente, arrays uni- e bi-dimensionais são os mais comuns.

    Os arrays podem ser considerados como as estruturas de dados mais simples. Têm a vantagem de que os seus elementos são acessíveis de forma rápida mas têm uma notável limitação: são de tamanho fixo, mas podem ser incrementados ou diminuídos com determinados algoritmos, geralmente envolvendo a cópia de elementos de um array para outro e reiniciar o original com a nova dimensão. Os vetores podem ser implementados desta forma.

    Estas estruturas de dados são ajeitadas nas situações em que o acesso aos dados seja realizado de forma aleatória e imprevisível. Porém, se os elementos podem estar ordenados e vai-se empregar um acesso sequencial, seria mais recomendada uma lista.

     
  • Nossa, para mim o erro está tão somente em dizer que array é um agregado heterogêneo de elementos de dados.
  • - Nos arrays todos os elementos que compoem o vetor ou matriz são de um mesmo tipo.

    - Arrays são HOMOGÊNEOS.


ID
56665
Banca
CESPE / CEBRASPE
Órgão
ANAC
Ano
2009
Provas
Disciplina
Algoritmos e Estrutura de Dados
Assuntos

Julgue os itens que se seguem, com relação a conceitos de
construção de algoritmos.

Uma função é dita recursiva quando faz uma chamada a si própria em seu corpo. Por essa característica, é importante a definição dos parâmetros formais e dos parâmetros reais utilizados na chamada recursiva. Caso os valores passados como parâmetro na chamada recursiva sejam os mesmos dos parâmetros recebidos pela função, sua execução será infinita.

Alternativas
Comentários
  • Não importa se a chamada recursiva é feita usando parâmetros reais ou formais (valor ou referência). Como a chamada é feita dentro do método (função ou procedimento) o valor real será sempre igual ao valor formal. Eles são diferentes somente fora do escopo do método.
  • O erro não é esse. Parâmetros formais não sao referências, são as cópias dos parametros reais, e isso é importante realmetne rpa recursão.O erro está em afirmar que será infinita a execução. Não necessariamente, é possível a presença de variáveis globais ou estáticas que se alterem e finalizem a execução.

  • Galera, não faça comentários sem citar fonte, tem gente usando o espaço comentários pra escrever um monte de besteira sem embasamento nenhum. My two cents.

ID
70255
Banca
FCC
Órgão
TRT - 3ª Região (MG)
Ano
2009
Provas
Disciplina
Algoritmos e Estrutura de Dados
Assuntos

Dois métodos orientados para busca em cadeias levam o nome de

Alternativas
Comentários
  • Questão horrível. Puro decoreba!

ID
71845
Banca
FCC
Órgão
TRT - 3ª Região (MG)
Ano
2009
Provas
Disciplina
Algoritmos e Estrutura de Dados
Assuntos

Envolvido em premissa segundo a qual é fácil multiplicar dois números primos para obter um terceiro número, mas muito difícil recuperar os dois primos a partir desse terceiro número. Trata-se do algoritmo

Alternativas
Comentários
  • RSA, é uma técnica de criptografia assimétrica.A premissa por trás do RSA é que é fácil multiplicar dois números primos para obter um terceiro número, mas muito difícil recuperar os dois primos a partir daquele terceiro número. Isto é conhecido como fatoração. Por exemplo, os fatores primos de 3.337 são 47 e 71. Gerar a chave pública envolve multiplicar dois primos grandes; qualquer um pode fazer isto. Derivar a chave privada a partir da chave pública envolve fatorar um grande número. Se o número for grande o suficiente e bem escolhido, então ninguém pode fazer isto em uma quantidade de tempo razoável. Assim, a segurança do RSA baseia-se na dificuldade de fatoração de números grandes. Deste modo, a fatoração representa um limite superior do tempo necessário para quebrar o algoritmo. fonte: http://vandradeq.sites.uol.com.br/Trabalhodecriptografia.htm

ID
76891
Banca
CESGRANRIO
Órgão
BACEN
Ano
2010
Provas
Disciplina
Algoritmos e Estrutura de Dados
Assuntos

Uma fábrica de software foi contratada para desenvolver um produto de análise de riscos. Em determinada funcionalidade desse software, é necessário realizar a ordenação de um conjunto formado por muitos números inteiros. Que algoritmo de ordenação oferece melhor complexidade de tempo (Big O notation) no pior caso?

Alternativas
Comentários
  • Merge Sort possui eficiência O( n log n) em qualquer situação. Insert Sort possui no pior caso O ( n2)Buble sort possui no pior caso O (n)Quick sort possui no pior caso O (n2) eselection sort possui no pior caso O (n2)
  • O merge sort, ou ordenação por mistura, é um exemplo de algoritmo de ordenação do tipo dividir-para-conquistar.
    Sua idéia básica é que é muito fácil criar uma sequência ordenada a partir de duas outras também ordenadas.
    Para isso, ele divide a sequência original em pares de dados, ordena-as;
    depois as agrupa em sequências de quatro elementos, e assim por diante, até ter toda a sequência dividida em apenas duas partes.

    Os três passos úteis dos algoritmos dividir-para-conquistar, ou divide and conquer, que se aplicam ao merge sort são:
    1. Dividir: Dividir os dados em subsequências pequenas;
    2. Conquistar: Classificar as duas metades recursivamente aplicando o merge sort;
    3. Combinar: Juntar as duas metades em um único conjunto já classificado.

    Vantagens
    - Algorítimo de ordenação de simples implementação e fácil entendimento utilizando chamadas recursivas.

    Desvantagens
    - Alto consumo de memória, devido a série de chamadas recursivas.

    Fonte: http://pt.wikipedia.org/wiki/Merge_sort

  • Classificação por Intercalação: divide a tabela em dois ou mais segmentos, ordena estes segmentos e depois os intercalam, terminando, ao final, com um único segmento (toda a tabela) ordenado.

    O principal algoritmo desta família é o mergesort.

  • Classificação por Inserção: dividem a tabela em dois segmentos, sendo o 1o ordenado e o 2o não ordenado. A seguir, todos os elementos do 2o segmento vão, um a um, sendo inseridos no 1o segmento. Os principais algoritmos desta família são inserção direta com busca seqüencial, inserção direta com busca binária e incrementos decrescentes (shellsort).

    Classificação por Trocas: efetuam a classificação por comparação entre pares de chaves, trocando-as de posição caso estejam fora de ordem. Os principais algoritmos desta família são bubblesort, shakesort, combsort e quicksort.

  • A primeira colega está equivocada quanto ao pior caso do BubbleSort, que será sempre O(n2).
  • Dica simples, rápida e free! ;-)

     

                                 PIOR      MÉDIO     MELHOR
    BUBBLE SORT:         O(n2)        O(n2)          O(n)
    QUICK SORT:           O(n2)        O(nlogn)    O(nlogn)
    MERGE SORT:          O(nlogn)   O(nlogn)    O(nlogn)
    INSERCTION SORT:   O(n2)        O(n2)         O(n)
    HEAPSORT:              O(nlogn)   O(nlogn)    O(nlogn)
    SELECTION SORT:     O(n2)        O(n2)         O(n2) 

     

    Para você ter uma noção do que é pior, médio e melhor veja o gráfico "Big-O Complexity Chart" no site a seguir:

     

    http://bigocheatsheet.com/

     

    Go ahead!!!

  • Gabarito A

    MergeSort - divide para conquistar sucessivamente o vetor, e vai ordenando juntando os vetores. Geralmente se implementa recursivamente.
    Algoritmo de ordenação oferece melhor complexidade de tempo (Big O notation) nlogn no pior caso.
     

     

     

     

    "Retroceder Nunca Render-se Jamais !"
    Força e Fé !
    Fortuna Audaces Sequitur !

  • a-

    todos os outros sao n² no pior caso. merge sort e merge sort sao nlogn


ID
79198
Banca
FCC
Órgão
TRT - 18ª Região (GO)
Ano
2008
Provas
Disciplina
Algoritmos e Estrutura de Dados
Assuntos

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

Alternativas
Comentários
  • 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.Disponível em: http://74.125.47.132/search?q=cache:jFCQbZUwbuAJ:www.ogenial.com.br/lucas/logica.ppt+constru%C3%A7%C3%A3o+de+algoritmos+cartesiano&cd=2&hl=pt-BR&ct=clnk&gl=br

ID
81550
Banca
FCC
Órgão
TRE-AM
Ano
2010
Provas
Disciplina
Algoritmos e Estrutura de Dados
Assuntos

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

Alternativas
Comentários
  • Esta questão cabe recurso.No que se refere à afirmação do item IV, não necessariamente a variável testada deve estar SEMPRE associada a uma instrução interna ao laço. A variável pode estar apenas na própria condição, e, de fato, é muito comum.Exemplo: while (++a <10){...}
  • O item IV é um absurdo. obivamente não é "NECESSÁRIO". Existem vários casos nos queais não ocorre loop infinito ainda que a variável testada não seja modificada no corpo do laço...
  • O item IV é falso. Exemplos:-while(false){}-while(database.connectec()){...}-while(i > 0){ i++ }
  • I - Verdade. É o caso do while(teste) {bloco de execução}. A condição é testada no início e o número de execuções é >= 0 pois o teste será avaliado antes de entrar no laço.II - Verdade. É o caso do do {bloco de execução}/ while(teste). A condição é testada no final e por isso o bloco é executado pelo menos uma vez.III - ERRADO. É verdade que toda a repetição condicional pode ser representada por estrutura de Enquanto / Faça ou Repita / Até, mas se representar por enquanto faça a condição deve ser VERDADEIRA, ao passo que se representar por Repita até tem que ser FALSA.IV - CORRETO. Se existe um teste com uma variável este teste visa fornecer uma condição de quebra. Se esta variável não é alterada ao longo do laço esta condiçào de quebra nunca irá ocorrer.OBS: Não confundir um loop infinito tradicional com um loop infinito que vem por conta de uma recursão. Com recursão existe uma forma de se limitar o número máximo de recursãoes.
  • Perdoe-me Humberto.Seu exemplo é while (++a <10){...}Perceba a estrutura da instruçãowhile(teste){bloco de execução}A opção fala sobre o escopo do laço (dentro do laço) e não sobre dentro do bloco de execução. Este while tem sua instrução de incremento de variável de teste dentro do escopo do laço. O laço começa com a declaração do while.A opção IV estaria errada ou melhor, passível de recurso, se falasse sobre dentro da estrutura de bloco de comando. Ainda assim, como é metalinguagem, alguns compiladores poderiam traduzir while (++a <10){...} para while (a<10){++a;...}. Seria dúbio ainda...Mas da forma elaborada não vejo como estar errada.
  • Atente para a interpretação de texto para o item IV:

    "IV- Para se impedir a situação conhecida como loop infinito......" Caso o programador queira forçar o loop, logo deve usar o while(true){}

    Logo, corretíssimo!


ID
81556
Banca
FCC
Órgão
TRE-AM
Ano
2010
Provas
Disciplina
Algoritmos e Estrutura de Dados
Assuntos

Em relação aos tipos abstratos de dados ? TAD, é correto afirmar:

Alternativas
Comentários
  • O Tipo abstrato de dados - TAD é uma especificação de um conjunto dedados e operçãoes que pde ser executado sobre esses dados. Ele encapsula a estrutura de dados para permitir que os usuários possam ter acesso a todas as operações sobre os dados.
  • Discordo da letra b. Pilhas funcionam da mesma forma, uma estrutura LIFO (Last In First Out). Se eu quiser transferir dado de uma pilha para outra basta usar as operações push e pop, presentes em qualquer pilha, e transferir da pila A para uma pilha intermediária e após encher a pilha intermediária transferir para uma pilha B.
  • a) Errado. É justamente o contrário, TAD encapsula as estruturas de dados para evitar o contato direto com esses dados.



    b) Errado. Não encontrei o erro no item. Não é necessário saber como a pilha é implementada para realizar a transferência entre as duas. O examinador pode ter interpretado que saber quais operações executar para realizar a transferência seja conhecimento sobre a implementação.


    c) Errado. O TAD serve justamente para esconder (encapsular) a implementação dos programadores que fizerem uso dele. Dessa forma, é possível alterar a implementação (otimizar o algoritmo por exemplo) sem afetar a forma como o TAD é utilizado.


    d) Errado. Sem conhecimento sobre a implementação de um TAD, o programador nunca saberá quando está alterando um dado armazenado, pois ele invocará operações do TAD e não acessará os dados diretamente.


    e) Certa. Definição de TAD.
  • Acredito que essa questão era passível de anulação, pois há duas respostas corretas. Sinceramente não vejo como a letra B esteja errada. De fato não é necessário saber como a pilha é implementada para transferir os dados de uma pilha para a outra, basta usar as suas operações. (Obs. Os dados serão transferidos em ordem invertida usando as operações push e pop das duas pilhas, mas até aí OK).

  • Caio Lamas o que a letra B diz é que não precisa saber se a implementação da pilha foi usando lista com inserção na cabeça ou na calda. Imagine que o programador implementa uma pilha com inserção no topo, sendo que o topo é o final da lista. Ai como vou saber transferi dados de outra pilha se eu não sei se coloco os dados na cabeça ou na calda? E foi isso que a questão quis dizer. Sacou?

    Imagine duas pilhas:

    A = 2,3,4,5   <-- veja que o topo>
    Agora imagine que outro programador implementou uma outra pilha onde começa-se inserindo do final pro início:

    B = 5,4,3,2 <== essa>

    Viu a diferença?


ID
104776
Banca
FCC
Órgão
TCM-PA
Ano
2010
Provas
Disciplina
Algoritmos e Estrutura de Dados
Assuntos

Os fluxos básicos de controle de um módulo são:

Alternativas
Comentários
  • Segundo a Wikipedia a resposta é letra D. Segue o link: pt.wikipedia.org/wiki/Estrutura_de_controle

     

  • O comentário de Augusto está correto. A resposta é letra D. O gabarito é que estava errado, mas já modificaram.

    Colocaram o gabarito de técnico de controle externo, mas essa prova é de técnico em informática.

    http://www.questoesdeconcursos.com.br/prova/arquivo_gabarito/1445/fcc-2010-tcm-pa-tecnico-em-informatica-gabarito.pdf

  • São os fluxos básicos de controle :

    seleção - efetua avaliação condicial, IF-THEN-ELSE
    repetição - efetua iterações, LOOP, WHILE
    sequência - efetua execução sequencial dos comandos.

    Teoricamente, com esses 3 fluxos básicos, pode-se programar o que quiser!
  • Só restou uma dúvida:
    Que raios essa questão tem a ver com usabilidade?
  • Modularização em tecnologia da informação é um conceito onde o sistema ou software é divido em partes distintas.

    As ferramentas são as sub-rotinas e as funções.

  • Acho que erraram na classificação dessa questão. Mandei uma notificação..


ID
104779
Banca
FCC
Órgão
TCM-PA
Ano
2010
Provas
Disciplina
Algoritmos e Estrutura de Dados
Assuntos

São algoritmos ou métodos de busca em cadeias:

Alternativas
Comentários
  • Esse gabarito foi incorretamente colocado como letra E, mas na verdade é letra A, que colocou essa prova aqui se confundiu pois há dois gabaritos no arquivo.O algoritmo de Knuth–Morris–Pratt procura a ocorrência de uma "palavra" W dentro de uma "string de texto" S empregando a simples técnica de que quando aparece uma diferença, a palavra tem em si a informação necessária para determinar onde começar a próxima comparação.The Boyer–Moore string search algorithm is a particularly efficient string searching algorithm, and it has been the standard benchmark for the practical string search literature.[1] It was developed by Bob Boyer and J Strother Moore in 1977. The algorithm preprocesses the target string (key) that is being searched for, but not the string being searched in (unlike some algorithms that preprocess the string to be searched and can then amortize the expense of the preprocessing by searching repeatedly). The execution time of the Boyer-Moore algorithm can be sub-linear: it doesn't need to check every character of the string to be searched, but rather skips over some of them. Generally the algorithm gets faster as the key being searched for becomes longer. Its efficiency derives from the fact that with each unsuccessful attempt to find a match between the search string and the text it's searching, it uses the information gained from that attempt to rule out as many positions of the text as possible where the string cannot match.
  • Resumindo, os três algoritmos de busca principais são:Knuth-Morris-Pratt: procura fazendo comparação da esquerda para direitaKnuth-Morris-Pratt: procura fazendo compração da direta para esquerdaKarp-Rabin: tira um HASH da string a ser procurada e tenta encontrar um hash similar no texto alvo da busca.
  • Ok, pessoal!

    Gabarito corrigido.

    Bons estudos!


ID
104932
Banca
FCC
Órgão
TRE-AM
Ano
2010
Provas
Disciplina
Algoritmos e Estrutura de Dados
Assuntos

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

Alternativas
Comentários
  • 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.Fonte:http://pt.wikipedia.org/wiki/M%C3%A1quina_de_Turing

ID
105538
Banca
FCC
Órgão
DPE-SP
Ano
2010
Provas
Disciplina
Algoritmos e Estrutura de Dados
Assuntos

Expressões lógicas são aquelas cujo resultado da avaliação é um valor lógico (verdadeiro ou falso). Considere as expressões abaixo.

I. (6 < 8) ou (3 > 7)

II. não (2 < 3)

III. (5 >= 6 ou 6 < 7 ou não (a + 5 - 6 = 8) {onde a = 5}

IV. (34 > 9 e 5 + u = 34) ou (5 = 15 / 3 e 8 > 12) = ((u = 29) e 8 > 12) {onde u = 29}

V. 2 > 3 e qv {onde qv representa qualquer valor}

VI. 2 < 3 ou qv {onde qv representa qualquer valor}

Os resultados verdadeiros correspondem às avaliações das expressões lógicas em

Alternativas
Comentários
  • I. (6 < 8) ou (3 > 7)V ou F = VII. não (2 < 3)nao V = FIII. (5 >= 6 ou 6 < 7 ou não (a + 5 - 6 = 8) {onde a = 5}(F ou V ou ... = VIV. (34 > 9 e 5 + u = 34) ou (5 = 15 / 3 e 8 > 12) = ((u = 29) e 8 > 12) {onde u = 29}V e V ou ... = VV. 2 > 3 e qv {onde qv representa qualquer valor}F e ... = FVI. 2 < 3 ou qv {onde qv representa qualquer valor} V ou ... = VAlgo estratanho. E alem do mais temos duas alteranativas com o mesmo valor!! Algum erro na transcricao desta questão!
  • I. (6 < 8) ou (3 > 7) O resultado é VERDADEIRO, pois 6 é menor do que 8II. não (2 < 3) O resultado é falso, pois 2 é menor do que 3, que retorna Verdadeiro, mas é negado, tornando Falso.III. (5 >= 6 ou 6 < 7 ou não (a + 5 - 6 = 8) {onde a = 5} pode ser reescrito da seguinte forma: (5 >= 6 ou 6 < 7 ou não (4 = 8))(F OU VERDADEIRO OU NÃO(F)) = (F OU VERDADEIRO OU VERDADEIRO) = VIV. (34 > 9 e 5 + u = 34) ou (5 = 15 / 3 e 8 > 12) = ((u = 29) e 8 > 12) {onde u = 29} 34 > 9 - V e 5 + 29 = 34 - V que dá V para a expressãoDaqui já sabemos que a expressão toda é verdadeira, pois para que o Ou retorne V basta que um dos operandos seja V.(VERDADEIRO E VERDADEIRO) OU (VERDADEIRO E F) = (VERDADEIRO E F)VERDADEIRO ou F = F = VERDADEIROV. 2 > 3 e qv {onde qv representa qualquer valor} FVI. 2 < 3 ou qv {onde qv representa qualquer valor} F. Não há como avaliar qualquer valor e além disso qualquer valor não retorna um resultado verdadeiro e nem falso para ser usado como operando de um operador lógico.A resposta é I, III e IV retornam Verdadeiro. Mas a letra a e e tem a mesma redação, a questão deve ser revista pelo site ou foi anulada pela banca.

ID
106186
Banca
FCC
Órgão
PGE-RJ
Ano
2009
Provas
Disciplina
Algoritmos e Estrutura de Dados
Assuntos

Uma estrutura de dados array pode ser do tipo

Alternativas
Comentários
  • b- 

    Consoante Edelweiss(2010), há 2 tipos de dados: dados basicos (primitivos), os quais sao indivisiveis e dados definidos por usuarios, os quais tambem sao dados estruturados, os quais podem ate conter dados basicos e outros estruturados. Exemplos de dados estruturados sao structs, arrays, matrices etc. Um array é caracterizado por ter dimensões (1d -> vetor, 2d ou 3d matriz), possuir index único, tipo (int etc) e conteúdo individual


ID
118624
Banca
FCC
Órgão
TRT - 20ª REGIÃO (SE)
Ano
2010
Provas
Disciplina
Algoritmos e Estrutura de Dados
Assuntos

Objeto que se constitui parcialmente ou é definido em termos de si próprio. Nesse contexto, um tipo especial de procedimento (algoritmo) será utilizado, algumas vezes, para a solução de alguns problemas. Esse procedimento é denominado:

Alternativas
Comentários
  • Um objeto é dito recursivo se ele consistir parcialmente ou for definido em termos de si próprio. Nesse contexto, um tipo especial de procedimento (algoritmo) será utilizado, algumas vezes, para a solução de alguns problemas. Esse procedimento é denominado recursivo. Todo procedimento, recursivo ou não, deve possuir pelo menos uma chamada proveniente de um local exterior a ele. Essa chamada é denominada externa. Um procedimento não recursivo é, pois, aquele em que todas as chamadas são externas.

    Fonte:
    http://www.uems.br/docentes/rmmuller/recursiv.pdf


ID
126196
Banca
FCC
Órgão
DPE-SP
Ano
2010
Provas
Disciplina
Algoritmos e Estrutura de Dados
Assuntos

É utilizada para avaliar uma determinada expressão e definir se um bloco de código deve ou não ser executado. Essa é a definição da estrutura condicional:

Alternativas
Comentários
  • A) estrutura de controle condicional utilizada quando o número de laços é determinado.

    B) OK

    C) estrutura de controle condicional utilizada quando o número de laços é indeterminado.

    D) estrutura de controle condicional utilizada quando o número de laços é indeterminado, mas tem a certeza que será executado ao menos 1 vez

    E) nada a ver

  • A) For

    Trata-se de uma estrutura de repetição, ou iteração, sendo projetado para expressar loops regulares.

    B) If...Then...Else

    Trata-se de uma estrutura de condição, decisão ou seleção.

    Esse tipo de estrutura permite que seja sempre executado um comando. Isso porque, caso a condição seja verdadeira, o comando da condição If...Then será executado; caso contrário, o comando da condição Else (falsa) será executado.

    C) While

    Trata-se de uma estrutura de repetição.

    Com essa estrutura, informa-se que um bloco de código deve ser repetido enquanto a condição declarada for verdadeira.

    D) Do...While

    Trata-se de uma estrutura de repetição.

    Funciona de forma similar à estrutura "While", diferenciando-se somente na validação do loop, que é feita no final de cada iteração, ou seja, o valor da condição é testado depois de cada execução do bloco ao invés de ser testado antes. 

    Nesse tipo de loop, pelo menos uma iteração ocorre, porque a avaliação da condição se dá após a execução da iteração.

    E) Next

    Trata-se de uma estrutura usada para pular uma iteração de um laço.

    Gabarito: letra B.


ID
126466
Banca
ESAF
Órgão
Prefeitura de Natal - RN
Ano
2008
Provas
Disciplina
Algoritmos e Estrutura de Dados
Assuntos

Analise as seguintes afi rmações relacionadas a conceitos básicos de programação e de algoritmos:

I. Considerando entradas totalmente desordenadas, em um algoritmo de "Ordenação por Inserção", o tempo consumido no processamento para ordenar uma entrada de mil números é o mesmo que o tempo gasto para ordenar uma entrada de três números, quando executados em uma mesma máquina com arquitetura RISC.
II. Considerando o tempo de execução do pior caso de um algoritmo, na pesquisa de um banco de dados em busca de um determinado fragmento de informação, o pior caso do algoritmo de pesquisa ocorrerá, na maioria das vezes, quando a informação não estiver presente no banco de dados.
III. Um algoritmo é dito recursivo quando, para resolver um problema, ele chama internamente vários outros algoritmos duas ou mais vezes para lidar com subproblemas intimamente relacionados.
IV. Para qualquer número inteiro N e qualquer número inteiro positivo K, o valor N mod K é o resto do quociente N/K.

Indique a opção que contenha todas as afi rmações verdadeiras.

Alternativas
Comentários
  • I. Considerando entradas totalmente desordenadas, em um algoritmo de "Ordenação por Inserção", o tempo consumido no processamento para ordenar uma entrada de mil números é o mesmo que o tempo gasto para ordenar uma entrada de três números, quando executados em uma mesma máquina com arquitetura RISC.CERTO. A pegadinha aquí é a entrada de mil números. Na verdade a questão foi mal redigida. Deveria ser uma entrada de mil algarismos.II. Considerando o tempo de execução do pior caso de um algoritmo, na pesquisa de um banco de dados em busca de um determinado fragmento de informação, o pior caso do algoritmo de pesquisa ocorrerá, na maioria das vezes, quando a informação não estiver presente no banco de dados.ERRADO. O pior caso não é não encontrar, e sim quando a informação, ao longo do processo de busca, está na última localização checada pelo algorítmo.III. Um algoritmo é dito recursivo quando, para resolver um problema, ele chama internamente vários outros algoritmos duas ou mais vezes para lidar com subproblemas intimamente relacionados.CORRETO.IV. Para qualquer número inteiro N e qualquer número inteiro positivo K, o valor N mod K é o resto do quociente N/K.ERRADO. O Operador MOD retorna o resto da divisão inteira de N/K. A pegadinha da questão é quando diz qualquer númeri inteiro positivo K. Basta que ele seja inteiro.
  • Daniel considerando o seu comentário quanto ao item IV, qual seria o resultado de 20 mod 0? (Lembre-se, zero é número inteiro).Quanto ao item II, se eu tenho 2 algoritmos, A, B e,na execução de A eu chamo 3 vezes o algoritmo B, isto significa que A é recursivo? Você está certo disto?Entendo que seria mais ou menos o seguinte: "Um algoritmo é dito recursivo quando, para resolver um problema, ele chama A SI PRÓPRIO duas ou mais vezes para lidar com subproblemas intimamente relacionados.
  • Como eu pensei, o gabarito oficial mostra a alternativa E como sendo a correta.
  • Concordo. Algoritmo recursivo chama a SI PROPRIO. Resposta certa letra E.

ID
128368
Banca
FCC
Órgão
TRT - 15ª Região (SP)
Ano
2009
Provas
Disciplina
Algoritmos e Estrutura de Dados
Assuntos

São algoritmos de classificação por trocas apenas os métodos

Alternativas
Comentários
  • QuickSortO algoritmo QuickSort (desenvolvido em 1960 pelo cientista Charles Antony Richard Hoare) é de longe o algoritmo de ordenação mais usado e considerado pelo maior parte dos programadores como o melhor algoritmo dentro do género.Este algoritmo implementa uma solução para a ordenação de um array baseado no famoso lema da informática “dividir para conquistar”. O que basicamente o QuickSort faz é ir dividindo o array, através da selecção de um pivot (elemento de referência), e ordenando depois cada parte. BubbleSortO algoritmo BubbleSort é talvez o algoritmo mais simples de se perceber dentro do género. A sintaxe que este algoritmo apresenta não necessita de explicações exaustivas, visto recorrer a aspectos básicos de programação (ciclos for/while, comparação de diferentes elementos do array, incrementação de uma variável, etc.). O próprio funcionamento do BubbleSort é muito simples: por cada iteração do ciclo, o maior elemento do array (para um determinado intervalo de elementos desse mesmo array) é colocado no índice final, previamente estabelecido. Isto é conseguido à custa de sucessivas comparações de um elemento do array com o seu elemento seguinte.
  • QuickSortO algoritmo QuickSort (desenvolvido em 1960 pelo cientista Charles Antony Richard Hoare) é de longe o algoritmo de ordenação mais usado e considerado pelo maior parte dos programadores como o melhor algoritmo dentro do género.Este algoritmo implementa uma solução para a ordenação de um array baseado no famoso lema da informática “dividir para conquistar”. O que basicamente o QuickSort faz é ir dividindo o array, através da selecção de um pivot (elemento de referência), e ordenando depois cada parte. BubbleSortO algoritmo BubbleSort é talvez o algoritmo mais simples de se perceber dentro do género. A sintaxe que este algoritmo apresenta não necessita de explicações exaustivas, visto recorrer a aspectos básicos de programação (ciclos for/while, comparação de diferentes elementos do array, incrementação de uma variável, etc.). O próprio funcionamento do BubbleSort é muito simples: por cada iteração do ciclo, o maior elemento do array (para um determinado intervalo de elementos desse mesmo array) é colocado no índice final, previamente estabelecido. Isto é conseguido à custa de sucessivas comparações de um elemento do array com o seu elemento seguinte.
  • Realmente esse tema faz parte de "Noções de informática" ?:|
  • Alguém poderia me esclarer, pois entendo que esta questão está errada, pois tanto QuickSort quanto MergeSort são algoritmos de ordenação por particioamento utilizando Métodos Eficientes.

     

     

     

     

  •  Acho que a questão esta errada!!

    Não existe gabarito correto para a questão.

  • Os métodos de classificação por trocas caracterizam-se por efetuarem a classificação por comparação entre pares de chaves, trocando-as de posição caso estejam fora da ordem desejada.
    Exemplos: método da bolha(bubblesort), método da agitação(shakesort), método do pente(combsort) e método da partição e troca(quicksort)
  • Vai ai como decorei, depois de decorado é só entender como cada um funciona

    SITID:

    2 - Seleção: S - SH ( Seleção - Selectshort, Heapsort)
    3 - Inserção: I - BBS (Busca sequencial, busca binaria, shellsort)
    4  -Troca: T-BSCq ( Bubble, shake, comb, quick)
    1 - Interlacação: I - M (merge)
    1 - Distribuição: D - R (rodix)
  • Métodos de ordenação por troca:

    A bolha sacode o pente rápido.

    A Bolha (Bubblesort) Sacode(Shakesort) o Pente(combsort) Rápido(Quicksort)
  • Quick e Merge não são por Divisão e Conquista?

  • Troca: Bubble, Quick

    Inserção: Insertion, Shell

    Seleção: Selection, Heap

    Intercalação: Merge

  • Métodos de Ordenação
     

     Ordenação por troca
        Bubble Sort
        Quick Sort


     Ordenação por Inserção
        Inserção Direta


     Ordenação por Seleção
        Selection Sort
        Heap Sort


ID
137215
Banca
CESGRANRIO
Órgão
Casa da Moeda
Ano
2009
Provas
Disciplina
Algoritmos e Estrutura de Dados
Assuntos

No desenvolvimento de um sistema de análise financeira, um programador utilizou um algoritmo cuja complexidade de tempo, no pior caso, é igual a O(n).
Outro programador aponta um algoritmo de melhor complexidade igual a

Alternativas
Comentários
  • Volto a dizer:

    A ordem de cima ai esta errada. O correto é:

    O(1) -> O(logn) -> O (n) -> O (nlog n) -> O(n^2) -> O (n^3) -> O (2^n ) -> O (n!)
  •  

    O examinador passou o valor (n) e quer um algoritmo de melhor complexidade, ou seja, quer um algoritmo mais eficiente que (n).

     

    (A) O(log n).(ao analisar a tabela abaixo constata-se que (logn) é o MENOS complexo e mais eficiente entre os citados.)
    (B) O(n log n).
    (C) O(n2)
    (D) O(2n)
    (E) O(n!)

     

    --------------------------------------------------------------------------------------------------------------------------------------

    A tabela que tem que ter tatuada no cerebro:

     

    CONSTANTE  | LOGARITMO | LINEAR  | NLOGN  | quadrática    |cúbica | EXPONENCIAL
    1                      | logn                | n             | nlogn     | n2                  |n3        | an

     

    OBS1. A complexidade vai aumentando, ou seja, CONSTANTE 1 é a menos complexa, já a exponencial é a mais complexa.

    OBS2. A eficiência vai diminuindo, ou seja, CONSTANTE 1 é a mais eficiente, já a exponencial é a menos eficiente.

    --------------------------------------------------------------------------------------------------------------------------------------

     


ID
142219
Banca
CESGRANRIO
Órgão
BNDES
Ano
2009
Provas
Disciplina
Algoritmos e Estrutura de Dados
Assuntos

Seja n o tamanho da entrada de um algoritmo para um problema P. Cada alternativa, que corresponde a um algoritmo distinto, apresenta o número de operações necessárias para resolver P. Considerando-se a análise assintótica (Big O notation), qual algoritmo possui menor complexidade?

Alternativas
Comentários
  • A ordem de cima ai esta errada. O correto é:

    O(1) -> O(logn) -> O (n) -> O (nlog n) -> O(n^2) -> O (n^3) -> O (2^n ) -> O (n!)
  • Lembrando que:
    • O(2 + 10log n) = O(log n)
    • O(3n2+n) = O(n2)
    • O(1000+2n3) = O(n3)
    • O(5n+128) = O(n)
    • O(4n)
    Em ordem crescente de complexidade temos:
    • O(log n) < O(n) < O(n2) < O(n3) < O(4n)
  • Ilustrando os comentários acima:
  • Cabe colocar também algumas das principais estruturas de dados/algoritmos de busca quanto à sua complexidade:
  • Simplificando :

    (A) 2 + 10log n - Complexidade logarítmica

    (B) 3n2 + n - Complexidade quadrática

    (C) 1000 + 2n3 - Complexidade cúbica

    (D) 5n + 128 - Complexidade linear

    (E) 4n    - Complexidade exponencial

    A resposta correta é letra (A), pois dentre as complexidades das alternativas da questão a logarítmica é a menor.
    Como informa a tabela do colega acima postada.


  • 1 PASSO: eliminar os números (eliminação em vermelho):

    (A) 2 + 10logn
    (B) 3n2 + n
    (C) 1000 + 2n3
    (D) 5n + 128
    (E) 4n

     

    2 PASSO: eliminar as funções menos complexas em detrimento as mais complexas (eliminação em negrito):

    (A) 2 + 10logn
    (B) 3n2 + n (OBSERVE AQUI QUE O MAIS COMPLEXO SEMPRE ELIMINARÁ O MENOS COMPLEXO, PORTANTO O n ta FORA)
    (C) 1000 + 2n3
    (D) 5n + 128
    (E) 4n

     

    3 PASSO: Analisar os resultados e assinalar qual é o mais complexo:

    (A) 2 + 10logn ----> logn (ESSE É O RESULTADO COM A FUNÇÃO MENOS COMPLEXA, PORTANTO É O GABARITO)
    (B) 3n2 + n ---> n2
    (C) 1000 + 2n3 ---> n3
    (D) 5n + 128 ---> n
    (E) 4n ---> 4n

     

    --------------------------------------------------------------------------------------------------------------------------------------

    A tabela que tem que ter tatuada no cerebro:

     

    CONSTANTE  | LOGARITMO | LINEAR  | NLOGN  | quadrática    |cúbica | EXPONENCIAL
    1                      | logn                | n             | nlogn     | n2                  |n3        | an

     

    OBS. A complexidade vai aumentando, ou seja, CONSTANTE 1 é a menos complexa, já a exponencial é a mais complexa

    --------------------------------------------------------------------------------------------------------------------------------------


ID
143725
Banca
FIP
Órgão
Câmara Municipal de São José dos Campos - SP
Ano
2009
Provas
Disciplina
Algoritmos e Estrutura de Dados
Assuntos

Assinale a alternativa incorreta:

Alternativas
Comentários
  • a) CORRETO. Heap Sort baseado no princípio de ordenação por seleção em arvore binaria. O método consiste em duas fases distintas: primeiro é feita a montagem de arvore binária (HEAP) contendo todos os elementos do vetor, de tal forma que o valor contido em qualquer nó seja maior do que os valores de seus sucessores e, numa segunda fase, o HEAP é usado para a seleção dos elementos na ordem desejada.

    b) CORRETO.  A recursividade é a definição de uma sub-rotina (função ou método) que pode invocar a si mesma.

    c) CORRETO.  

    As três maneiras mais usuais para percorrer os nós são:

    Caminhamento Pré-fixado

    1) visita a raiz

    2) percorre a sub-árvore da esquerda

    3) percorre a sub-árvore da direita

    Caminhamento In-fixado

    1) percorre a sub-árvore da esquerda

    2) visita a raiz

    3) percorre a sub-árvore da direita

    Caminhamento Pós-fixado

    1) percorre a sub-árvore da esquerda

    2) percorre a sub-árvore da direita

    3) visita a raiz

    d) CORRETO. Em ciência da computação, uma Fila Duplamente Terminada (frequentemente abreviada como DEQUE, do inglês Double Ended Queue) é um tipo de dado abstrato que generaliza uma fila, para a qual os elementos podem ser adicionados ou removidos da frente (cabeça) ou de trás (cauda).

    e) ERRADO. Um caminhamento completo sobre uma árvore binária produz uma sequência linear dos nós, de modo que cada nó da árvore passa a ter um nó seguinte ou um nó anterior, ou ambos, para uma dada forma de caminhamento.


ID
147634
Banca
FCC
Órgão
MPU
Ano
2007
Provas
Disciplina
Algoritmos e Estrutura de Dados
Assuntos

Considere:

I. Os algoritmos de busca binária e de busca seqüencial executam processamento repetitivo.
II. Os algoritmos de busca binária e de busca seqüencial utilizam a técnica de recursão.
III. A busca seqüencial executa cada fase da repetição na forma de uma subtarefa da fase anterior.
IV. A busca binária trabalha com uma forma circular de repetição.

Está correto o que consta em

Alternativas
Comentários
  • Para ambas técnicas o vetor deve estar ordenado de forma crescente (1,2,3...)

    Sequencial - Faz o que o próprio nome diz, percorre todo vetor até encontrar o valor desejado.

    Binário - Usa tres ponteiros chamados de inicio, meio e fim, e vai diminuindo a busca alternando os ponteiros, consequentemente, diminuindo os espaços até encontrar o valor desejado.

    I. Correta
    II. Sequencial não é recursivo
    III. Subtarefa nada haver
    IV. Circular nada haver
  • A pesquisa ou busca binária (em inglês binary search algorithm ou binary chop) é um algoritmo de busca em vetores que requer acesso aleatório aos elementos do mesmo. Ela parte do pressuposto de que o vetor está ordenado e realiza sucessivas divisões do espaço de busca (divisão e conquista) comparando o elemento buscado (chave) com o elemento no meio do vetor. Se o elemento do meio do vetor for a chave, a busca termina com sucesso. Caso contrário, se o elemento do meio vier antes do elemento buscado, então a busca continua na metade posterior do vetor. E finalmente, se o elemento do meio vier depois da chave, a busca continua na metade anterior do vetor.


ID
148054
Banca
FCC
Órgão
TRT - 16ª REGIÃO (MA)
Ano
2009
Provas
Disciplina
Algoritmos e Estrutura de Dados
Assuntos

São, respectivamente, um método de busca e um método de ordenação:

Alternativas
Comentários
  • a)BUSCA(pesquisa) / ORDENAÇÃO
    b)ORDENAÇÃO/ BUSCA(pesquisa)
    c)ORDENAÇÃO / ORDENAÇÃO
    d)ORDENAÇÃO/BUSCA(pesquisa)
    e)BUSCA(pesquisa) / BUSCA(pesquisa)
  • Busca Linear --> Dado uma lista (ordenada ou não) o elemento procurado é buscado do inicio ao fim sequencialmente até que seja encontrado; 

    int procura(char vetor[], int tamanho, char elementoProcurado) {     int i;     for (i = 0; i < tamanho; i++) {         if (vetor[i] == elementoProcurado) {             return i;         }     }      return -1; }


    Seleção direta ou SelectionSort --> Dado uma lista, seleciona-se sempre o menor valor e o posiciona no inicio da lista

    void selecaoDireta(int *vetor, int tamanho)
    {
       int i, j, menor, aux;
     
       for(i = 0; i < tamanho - 1; ++i)
       {
          menor = i;
          for(j = i + 1; j < tamanho; ++j)
          {
             if(vetor[j] < vetor[menor])
                menor = j;
          }
          aux = vetor[i];
          vetor[i] = vetor[menor];
          vetor[menor] = aux;
       }
    }
  • Quando começar com POR, é Ordenação.

  • Gabarito A

    Busca Linear - Dado uma lista (ordenada ou não) o elemento procurado é buscado do inicio ao fim sequencialmente até que seja encontrado.

     

    Seleção - encontra o menor elemento e o troca com a primeira posição, depois o segundo menor com a segunda posição, e assim sucessivamente (n-1 vezes). Número de com,parações (N2 − N)/2, sendo muito lento e inadequado para valores grandes de N.

     

     

     

    "Retroceder Nunca Render-se Jamais !"
    Força e Fé !
    Fortuna Audaces Sequitur !


ID
148063
Banca
FCC
Órgão
TRT - 16ª REGIÃO (MA)
Ano
2009
Provas
Disciplina
Algoritmos e Estrutura de Dados
Assuntos

O poder da recursão deve-se à possibilidade de definição de um conjunto

Alternativas
Comentários
  • Recursão é o processo de definir algo em termos de si mesmo e é, algumas vezes, chamado de definição circular. Assim, pode-se dizer que o conceito de algo recursivo está dentro de si, que por sua vez está dentro de si e assim sucessivamente, INFINITAMENTE.
     
    Um algoritmo recursivo sempre deverá ter uma condição de parada (solução trivial) que define quando a recursão se encerra, ou seja a sua formulação é FINITA. Mas, os OBJETOS que serão utilizado no algoritmo recursivo terão  definições INFINITAS. Cabe o algoritmo limitá-los.
     
    Exemplo de objetos:
    O primeiro número natural é zero.
    O sucessor de um número natural é um número natural.
     
    Percebe-se que os valores desses objetos nunca vão acabar até que o algoritmo recursivo limite-os.
     
    Portanto, a definição dos objetos são INFINITOS e a formulação do seu algoritmos tenha uma resposta FINITA.
  •  c)infinito de objetos por meio de uma formulação finita.

    vai no google e pesquisa "recursion". ele vai questionar "do you mean 'recursion'?". se clicar na sugestao, ele de novo vai sugerir "do you mean 'recursion'?". Dessa forma, tu vai ficar infinitamente buscando recursion a menos que tu estabeleça um critério (uma formulação finita) para limitar o numero de iterações para buscar 'recursion'. 


ID
149389
Banca
FCC
Órgão
TJ-SE
Ano
2009
Provas
Disciplina
Algoritmos e Estrutura de Dados
Assuntos

A recursividade na programação de computadores envolve a definição de uma função que

Alternativas
Comentários
  •  recursividade na programação de computadores envolve a definição de uma função que pode invocar a si própria, ou seja, nesta mesma função ela chama a si mesma até que a condição do loop satisfaça terminando a execução da função.

  • RE-cursivo, que pode tornar cursivo em si mesmo. Letra E.
  • A recursividade é um recurso bastante útil na linguagens de programação que consiste da própria função chamar a si mesma.

    Muito utilizada para percorrer árvores usando busca binária, ou montar árvores do tipo AVL (árvore binária balanceada). Note podemos resolver um problema de forma recursiva ou interativa (com laços de repetição).

    Gabarito: E.

     

     

  • A recursividade é uma função/método que chama a si mesmo uma ou mais vezes. 

    Alternativa: E


ID
149410
Banca
FCC
Órgão
TJ-SE
Ano
2009
Provas
Disciplina
Algoritmos e Estrutura de Dados
Assuntos

Sobre os algoritmos de busca pode-se afirmar que o método

Alternativas
Comentários
  • Pesquisa Seqüencial ou Linear: é o método mais simples de pesquisa econsiste em uma varredura serial dos dados, durante a qual um argumento de pesquisa é comparado com a chave de cada entrada até que seja encontrada uma que seja igual, ou ser atingido o final da sequencia de dados.
    O desempenho do algoritmo de pesquisa sequencial é ruim, já que onúmero médio de comparações para a localização de uma entrada
    qualquer na tabela é dado pela fórmula abaixo, considerando que todasas entradas possuem a mesma possibilidade de serem solicitadas.

  • Pesquisa binária: é um método de pesquisa que só pode ser aplicado em
    conjunto de dados ordenados (e com acesso direto – memória principal).
    O método compara a chave de pesquisa com o elemento central do
    conjunto de dados. Se a chave de busca coincidir com o elemento do
    conjunto de dados, a pesquisa termina com sucesso. Caso contrário,
    verifica-se se a chave de pesquisa é maior ou menor do que o elemento
    comparado. Se for maior, o algoritmo é repetido para a parte do conjunto
    de dados ordenado que estiver após a posição comparada (centro).

  • Seleção Direta (SelectSort): é o método mais simples de classificação por
    seleção, no qual é feita uma busca sequencial para se encontrar o menor
    elemento da tabela. Quando este é encontrado, ele é permutado com o
    elemento que se encontra na posição inicial da tabela. A seguir, repete-se
    o processo para o restante da tabela, desconsiderando-se o 1º elemento
    da tabela (que já contém o menor elemento).
    • A cada passo encontra-se o menor elemento dentro do segmento
    com os elementos não selecionados;
    • Troca-se este elemento com o primeiro elemento do segmento;
    • Atualiza-se o tamanho do segmento (menos um elemento);
    • Este processo é repetido até que o segmento fique com apenas um
    elemento.

  •  Em relação à busca binária, pq ela é a mais adequada p/ pesqusiar grande quantidade de dados? Uma busca utilizado um árvore binária não seria mais adequada?

  • Questão mal feita. Tanto que os bancos de dados utilizam árvores B como índice, e não árvores binárias


ID
149926
Banca
CESPE / CEBRASPE
Órgão
ANAC
Ano
2009
Provas
Disciplina
Algoritmos e Estrutura de Dados
Assuntos

O desempenho de um sistema computacional depende de vários
fatores, como volume de dados, capacidade do sistema e
adequação dos algoritmos, das estruturas de dados e dos objetos
que são utilizados para realizar as operações. Acerca desse
assunto, julgue os itens que se seguem.

A ordenação de um vetor contendo n elementos, utilizando-se algoritmo de bolha, realiza, no pior caso, mais que n/2 comparações.

Alternativas
Comentários
  •  No pior caso, são feitas 2n2 operações. 

    http://pt.wikipedia.org/wiki/Bubble_sort

  • Algoritmo de bolha (bubble sort) realiza:
    i) melhor caso (já ordenado): (n-1) comparações;
    ii) pior caso (lista invertida): n² comparações;
    Como ele afirma que são mais que n/2 e n² > n/2, questão correta.
  • Está questão realmente está certa? Pois n/2 entendo que é uma fração, e não uma exponenciação 

  • o correto mesmo deveria ser

     

    2017

    No pior caso, quando o vetor está inversamente ordenado, o algoritmo Bubble Sort executa n2 operações para a ordenação de um vetor de n elementos.

    certa

     


ID
149929
Banca
CESPE / CEBRASPE
Órgão
ANAC
Ano
2009
Provas
Disciplina
Algoritmos e Estrutura de Dados
Assuntos

O desempenho de um sistema computacional depende de vários
fatores, como volume de dados, capacidade do sistema e
adequação dos algoritmos, das estruturas de dados e dos objetos
que são utilizados para realizar as operações. Acerca desse
assunto, julgue os itens que se seguem.

A busca binária pode ser realizada em vetor não ordenado. Caso o vetor contenha n elementos, o tempo de execução da busca necessita de 5n comparações.

Alternativas
Comentários
  •  Necessita de log n comparações.

  • A busca binária não pode ser realizada em um vetor desordenado e o tempo de execução é da ordem de log(n) e não 5n.

  • O erro começa no 1º período da assertiva. Nem li o resto:

    "A busca binária pode ser realizada em vetor não ordenado. ...."

    Não! O vetor tem que ser ordenado para se realizar a busca binária.
  • Tem que está  ordenado, pois  isso é um requisito obrigatório para busca ordenada


ID
149950
Banca
CESPE / CEBRASPE
Órgão
ANAC
Ano
2009
Provas
Disciplina
Algoritmos e Estrutura de Dados
Assuntos

Com relação a aspectos de linguagem de programação,
programação estruturada, programação orientada a objetos e
conceitos associados, julgue os itens de 106 a 113.

O escopo em que uma variável é declarada define, obrigatoriamente, a que função do tipo pública essa variável se associa.

Alternativas
Comentários
  • Teoria

    Existem duas formas para a declaração de uma variável para uma função:

    A variável local = essa sim satisfaria a questão para ser certa, pois a variável local é valida somente localmente, daí o seu nome;

    A variável global = é declarada fora de todas as funções e em qualquer parte do programa. Ela pode ser usada e modificada por todas as outras funções.

    Aplicando a teoria na questão

    Veja bem, já que a questão não especificou muito bem qual tipo de declaração da variável e usou o termo obrigatoriamente, o gabarito se torna errado, pois é muito forçado dizer isso somente com a informação disponibilizada pelo certame.

    #bonsestudos

  • Na verdade, podemos ter variáveis globais e variáveis locais, a global é definida é um determinado lugar no sistema e que na maioria das vezes ela pode ser invocada em qualquer parte do mesmo. Já a variável local, só pode ser usada no lugar em que foi declarado.

    Resposta: Errado

  • Entendo que a função não necessariamente deve ser pública.


ID
149959
Banca
CESPE / CEBRASPE
Órgão
ANAC
Ano
2009
Provas
Disciplina
Algoritmos e Estrutura de Dados
Assuntos

Com relação a aspectos de linguagem de programação,
programação estruturada, programação orientada a objetos e
conceitos associados, julgue os itens de 106 a 113.

Recursão ocorre quando uma função chama a ela mesma direta ou indiretamente.

Alternativas
Comentários
  • correto-

    recursividade ocorre quando uma função chama a si mesma, o que implica que ela chamara a si mesma indefinidamente a menos que haja uma condição:

    int factorial (int x){

    if (x > 1){

    return x * (factorial (x-1));

    }else

    return 1;

    }


ID
150289
Banca
FCC
Órgão
TJ-PA
Ano
2009
Provas
Disciplina
Algoritmos e Estrutura de Dados
Assuntos

O produto da ação de algoritmos que fazem o mapeamento de uma sequência de bits de tamanho arbitrário para uma sequência de bits de tamanho fixo menor, com resistência à colisão e cujo processo reverso também não seja realizável, denomina-se

Alternativas
Comentários
  •  http://cantinhodomanel.blogspot.com/2007/08/o-que-hash.html

  • Pesquisa por Cálculo de Endereço (Hashing)
    Tabelas onde é possível fazer pesquisas através do cálculo de endereço
    são conhecidas por Tabelas HASH. Hash, em inglês, significa dispersão,
    espalhamento. Este método de pesquisa é bastante útil quando a busca é
    feita sobre um número muito grande de dados que possuam faixas de
    valores muito variável.
    Tabelas HASH são como a maioria das outras tabelas, à exceção que é
    possível fazer acesso não sequencial a determinados registros da tabela
    através do uso de funções hash (em português: funções de
    espalhamento).

  • Uma aplicação importante desse embaralhamento é verificar a integridade de mensagens. Determinando qualquer mudança feita numa mensagem, ou então arquivo de computador. Por exemplo, pode ser feito comparando o resumo calculado antes, e depois a transmissão, ou qualquer outro evento.

    Por essa razão, a maior parte dos algoritmos de assinatura digital apenas confirma a autenticidade de um hash resumo para ser autenticado. Verificação da autenticidade de um resumo hash é considerada como prova de que a mensagem é verdadeira.


ID
150328
Banca
FCC
Órgão
TJ-PA
Ano
2009
Provas
Disciplina
Algoritmos e Estrutura de Dados
Assuntos

A necessidade de rearranjo de um certo conjunto de elementos, de acordo com um critério específico, indica

Alternativas
Comentários
  • Um arranjo (array, vetor ou matriz) é um agregado HOMOGÊNEO de
    elementos de dados. Não há possibilidade de que o array seja de
    elementos heterogêneos. Não confunda um arranjo onde os elementos
    são registros (onde os componentes do registro podem ser de tipos
    diferentes) com a ideia de arranjo heterogêneo. Quando o arranjo é um
    agregado de registros, todos os elementos do arranjo possuem a mesma
    forma (definida pelo registro), ou seja, o arranjo é homogêneo. Outro
    cuidado é não confundir o tipo de dado do arranjo (homogêneo = tipos
    iguais) com o conteúdo de cada elemento do arranjo (valores diferentes).


ID
150331
Banca
FCC
Órgão
TJ-PA
Ano
2009
Provas
Disciplina
Algoritmos e Estrutura de Dados
Assuntos

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

Alternativas
Comentários
  •  http://www.fundao.wiki.br/articles.asp?cod=33

  • -- 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.

    http://wiki.icmc.usp.br/images/2/26/Aula_recursividade.pdf

ID
151822
Banca
FCC
Órgão
TRE-PI
Ano
2009
Provas
Disciplina
Algoritmos e Estrutura de Dados
Assuntos

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

Alternativas
Comentários
  • Letra 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.
  • Gabarito: E

    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.
  • Por que a B está errada?

  • Também marquei B.

     

    A pilha, então, não admite ser declarada como tipo abstrato?

  • a) ERRADO. De forma resumida, um TAD é um tipo de dados que esconde 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. É como se fosse o conceito de classes na Programação Orientada a Objetos.

    b) ERRADO. Quando trabalhamos com estruturas de dados como pilhas, filas e árvores, podemos fazer uso de tad‟s, pois, além de conter dados, há implementações envolvidas nessas estruturas, por exemplo, inserir um elemento novo em uma fila. Então qualquer estrutura (não apenas algumas, como afirma a letra) pode ser declarada como tad.

    c) ERRADO. Vejam o comentário da letra (B).

    d) ERRADO. Nada impede que dentro dos dados de um tad haja outros tad‟s. É como se declarássemos uma classe onde uma de seus atributos de um tipo de outra outra classe ou até mesmo da própria classe.

  • A: Tipo abstrato de dados ENCAPSULA sim a estrutura de dados.
    B: TODAS as pilhas admitem serem declaradas como tipo abstrato de dados, não ALGUMAS.
    C: Permitem sim.
    D: Um tipo abstrato de dados é um conceito, pode ser composto por tipos primitivos e também complexos.


ID
152527
Banca
CESPE / CEBRASPE
Órgão
TRE-MG
Ano
2009
Provas
Disciplina
Algoritmos e Estrutura de Dados
Assuntos

A respeito das estruturas de controle de fluxo, assinale a opção incorreta.

Alternativas
Comentários
  • a) Estrutura de desvio incondicional ...  ex: GOTO - C

    b) As instruções iterativas... . São os laços While e do-while, podem ser executadas nenhuma, uma ou várias vezes - C

    c) Instruções compostas... - C

    d) Seleção bidirecional e n-direcioinal... if e if/else e Case - C

    e) instrução de seleção: permite selecionar um de dois ou mais caminhos possíveis de execução de um programa; Instruções iterativas permitem a execução de uma instrução ou bloco delas nenhuma, uma ou várias de acordo com uma condição. - E


ID
154033
Banca
FCC
Órgão
MPE-RN
Ano
2010
Provas
Disciplina
Algoritmos e Estrutura de Dados
Assuntos

As estratégias de divisão e de conquista são utilizadas pelos algoritmos de ordenação

Alternativas
Comentários
  • Relação de algoritmos para memorizar:

    Ordenação por inserção: Insertion sort, Shell sort(melhoria do Insertion sort), Gnome sort(similar ao insertion sort e funcionamento do Bubble sort), 

    Ordenação por seleção: Selection sort, Heap sort

    Ordenação por comparação/troca: Bubble sort(ou ordenação por flutuação), Comb sort(melhoria do Bubble sort), Cocktail sort(Bubble em duas direções)

    Ordenação por divisão e conquista: Quick sort, Merge sort

     

    Outros: Radix sort, Counting sort, Bogosort(probabilístico), Bucket sort.
  • Classificação por intercalação
    Os métodos de classificação por intercalação dividem a tabela em dois
    ou mais segmentos, ordenam estes segmentos e depois os intercalam,
    terminando, ao final, com um único segmento (toda a tabela) ordenado.
    O principal algoritmo desta família é o MergeSort (ou Intercalação
    Simples).
    MergeSort (Intercalação Simples): A idéia por traz do MergeSort é bastante
    simples: divide-se a tabela em diversos segmentos menores para a seguir
    ordenar-se estes segmentos. Feito isto, estes segmentos são agrupados entre sí (intercalados) e este processo produz novos segmentos ordenados
    (maiores que os segmentos iniciais).
    O processo de agrupamento e ordenação dos segmentos (intercalação)
    continua até que se obtenha um único segmento que contenha toda a
    tabela e esteja totalmente ordenado.

  • Método da Troca e Partição (QuickSort): é o mais rápido entre os métodos
    apresentados até o momento, e também o mais utilizado. Esse método foi
    proposto por C. A. R. Hoare em 1962 e parte do princípio que é mais rápido
    classificar dois vetores com n/2 elementos cada um, do que um com n
    elementos (dividir um problema maior em dois menores).
    A parte mais delicada do método é o particionamento do vetor. O vetor é
    particionado em três segmentos:
    V[1], ..., V[i - 1]            V[i]             V[i + 1], ..., V[n]
    (segmento 1) (segmento 2) (segmento 3)
    A partição é realizada através da escolha arbitrária de um elemento (V[i])
    de modo que os elementos no segmento 1 sejam menores, e os elementos
    no segmento 3 sejam maiores do que o elemento escolhido V[i].
    Após a ordenação dos segmentos 1 e 3, tem-se o vetor original
    classificado. O processo de partição pode ser repetido para os segmentos
    1 e 3.
    Obs. Quando um segmento apresenta um número de elementos menor ou
    igual a M (um número pré-estabelecido), aplica-se um método simples de
    ordenação.

  • c)Quick sort e Merge sort

  • MERGE SORT

    Esse algoritmo segue o paradigma divisão e conquista.
     Divisão: Divide a sequência de n elementos que deve ser ordenada em subsequências de n/2 elementos cada uma.
     Conquista: Ordena as duas sequencias recursivamente. A recursão termina quando a sequência a ser ordenada tiver apenas um elemento.
     Combinação: Intercala as duas subsequências ordenadas para produzir a resposta ordenada.

     

    QUICK SORT

    O quick sort é um método de ordenação por troca que aplica o paradigma de divisão e conquista.
     Um elemento do arranjo será escolhido como pivô.
     Em seguida o arranjo é dividido em 2 subarranjos:
     Elementos menores ou iguais ao pivô.
     Elementos maiores que o pivô
     Os dois arranjos do passo anterior são ordenados recursivamente com o quick sort.

  • Gabarito C

    Quicksort - Escolhe-se um pivot e particiona-se a lista em duas sublistas: uma com os elementos menores que ele e outra com os maiores, que, ao serem ordenadas e combinadas com o pivot, geram uma lista ordenada. O processo é aplicado às partições para ordená-las. Embora tenha uma complexidade de pior caso de O(n2 ), no caso médio é de O(n log n).
     

    MergeSort - divide para conquistar sucessivamente o vetor, e vai ordenando juntando os vetores. Geralmente se implementa recursivamente.
     

     

     

     

    "Retroceder Nunca Render-se Jamais !"
    Força e Fé !
    Fortuna Audaces Sequitur !


ID
157855
Banca
FCC
Órgão
METRÔ-SP
Ano
2008
Provas
Disciplina
Algoritmos e Estrutura de Dados
Assuntos

O objetivo de fazer uma busca rápida a partir de uma chave de pesquisa simples e obter o valor desejado é alcançado pela estrutura de dados especial denominada

Alternativas
Comentários
  • Tabela hashing  também conhecida por tabela de espalhamento, é uma estrutura de dados especial, que associa chaves de pesquisa (hash) a valores. Seu objetivo é, a partir de uma chave simples, fazer uma busca rápida e obter o valor desejado. É algumas vezes traduzida como tabela de escrutínio.


ID
161518
Banca
FCC
Órgão
MPE-RS
Ano
2008
Provas
Disciplina
Algoritmos e Estrutura de Dados
Assuntos

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

Alternativas
Comentários
  •  Prioridade mais alta: NOT

    Prioridade média: AND

    Prioridade mais baixa: OR XOR

    Tirado daqui

  • Prioridade na ordem dos operadores :
    Not --> And --> Or  
    Para ficar mais fácil só lembrar da palavra: NAO
  • Not, And e Or. -> NAO.

  • bNot, And e Or.

    NOt é representado por ! ou ~. sua função é inverter o sinal. O and tem preferência sobre o or porque o and, em binário, é equivalente à multiplicação, enquanto que o or é a adiçao. Isso acontece que em and o resultado so sera 1 se ambos forem 1, enquanto que em or o resultado é 1 se ambos ou um dos operandos forem 1


ID
162736
Banca
CESGRANRIO
Órgão
Petrobras
Ano
2010
Provas
Disciplina
Algoritmos e Estrutura de Dados
Assuntos

Relacionado à programação de computadores, um algoritmo, seja qual for a sua complexidade e a linguagem de programação na qual será codificado, pode ser descrito por meio da

Alternativas
Comentários
  • e)pseudolinguagem.

    pseudcodigo é um esboço de uma codigo que se faz sem ser em programa compilador. é muito usado para instruções primárias, as quais tratam das operações basicas do computadior, como input & output e alocação dos dados manipulados na memoria do sistema. exemplo:

    algoritmo "exemplo"

    var

    preco_unitario, total : real

    qtde : inteiro

     

    inicio

    //processamento

    preco_unitario <- 10

    qtde <- 5

    total <- preco_unitario * qtde

     

    finalalgoritmo

  • A) reografia.

    Esse termo não corresponde a qualquer técnica de programação.

    B) criptografia.

    Trata-se da prática de codificar e decodificar dados, almejando a segurança da informação.

    C) linguagem de marcação.

    Linguagens de marcação são utilizadas para definir formatos, maneiras de exibição e padrões dentro de um documento qualquer, não sendo adequadas à programação.

    D) engenharia estruturada.

    O item tenta causar confusão com o termo programação estruturada, o qual é uma técnica de programação, independente da linguagem de programação, que tem como objetivo construir programas claros, legíveis, eficientes e de fácil manutenção.

    E) pseudolinguagem.

    Trata-se do pseudocódigo, que é uma linguagem intermediária entre a linguagem natural e a linguagem de programação.

    O pseudocódigo se vale de um conjunto restrito de palavras-chave, cujos equivalentes são encontrados nas linguagens de programação.

    Um tipo de pseudocódigo é o Portugol, adequado à programação de computadores.

    Gabarito: letra E.


ID
163060
Banca
CESGRANRIO
Órgão
Petrobras
Ano
2010
Provas
Disciplina
Algoritmos e Estrutura de Dados
Assuntos

O quicksort é um algoritmo que funciona usando o paradigma de dividir e conquistar, usando uma rotina de particionamento que divide o vetor de estruturas em dois pedaços em torno de um pivô. O pedaço da esquerda só contém elementos com chaves menores ou iguais que o elemento corrente e o pedaço da direita, só elementos com chaves maiores que o elemento corrente. O algoritmo procede, então, para o subproblema de ordenar cada um dos pedaços e seu desempenho total é um dos mais eficientes para ordenação de estruturas de dados. Qual das seguintes descrições representa uma correta característica do algoritmo quicksort?

Alternativas
Comentários
  • Método da Troca e Partição (QuickSort): é o mais rápido entre os métodos
    apresentados até o momento, e também o mais utilizado. Esse método foi
    proposto por C. A. R. Hoare em 1962 e parte do princípio que é mais rápido
    classificar dois vetores com n/2 elementos cada um, do que um com n
    elementos (dividir um problema maior em dois menores).
    A parte mais delicada do método é o particionamento do vetor. O vetor é
    particionado em três segmentos:
    V[1], ..., V[i - 1]           V[i]                V[i + 1], ..., V[n]
    (segmento 1)   (segmento 2)   (segmento 3)
    A partição é realizada através da escolha arbitrária de um elemento (V[i])
    de modo que os elementos no segmento 1 sejam menores, e os elementos
    no segmento 3 sejam maiores do que o elemento escolhido V[i].
    Após a ordenação dos segmentos 1 e 3, tem-se o vetor original
    classificado. O processo de partição pode ser repetido para os segmentos
    1 e 3.
    Obs. Quando um segmento apresenta um número de elementos menor ou
    igual a M (um número pré-estabelecido), aplica-se um método simples de
    ordenação.

    • Complexidade de tempo: θ(n lg2 n) no melhor caso e no caso médio e θ(n2) no pior caso;
    • Complexidade de espaço: θ(lg2 n) no melhor caso e no caso médio e θ(lg2 n) no pior caso. R. Sedgewick desenvolveu uma versão do Quicksort com partição recursão de cauda que tem complexidade θ(n2) no pior caso.
  • Essa questão deveria ter sido anulada, pois apresenta erro de notação.

    teta(n): caso médio
    ômega(n): pior caso
    O(n): pior caso

    Como a questão utiliza teta(n) para falar de pior caso, há erro de notação. Alguém comenta?
  • Olá galera, dica rápida, simples e free!!!!

     

                          PIOR     MÉDIO     MELHOR
    QUICK SORT:      O(n2)      O(nlogn)      O(nlogn)

     

    A técnica de particionamento é uma arma poderosa que o quicksort possui.

     

    Para maiores detalhes: https://pt.wikipedia.org/wiki/Quicksort

     

     

    Go ahead!!!

  • Gabarito C

    Quicksort - Escolhe-se um pivot e particiona-se a lista em duas sublistas: uma com os elementos menores que ele e outra com os maiores, que, ao serem ordenadas e combinadas com o pivot, geram uma lista ordenada. O processo é aplicado às partições para ordená-las. Embora tenha uma complexidade de pior caso de O(n2 ), no caso médio é de O(n log n).
     

     

     

     

    "Retroceder Nunca Render-se Jamais !"
    Força e Fé !
    Fortuna Audaces Sequitur !

  • c-

    O método Quicksort é uma aplicação do princípio divide and conquer. Para a ordenação, inicialmente o vetor é dividido em uma sublista da direita e uma da esquerda, de modo que todo elemento da sublista da esquerda seja menor que o da direita. Em seguida, ordenam-se, pelo mesmo processo, as duas sublistas de forma recursiva. o pior caso é n². normal é nlogn


ID
163069
Banca
CESGRANRIO
Órgão
Petrobras
Ano
2010
Provas
Disciplina
Algoritmos e Estrutura de Dados
Assuntos

Uma lista ordenada de N números é inserida em uma pilha e depois retirada, sendo que, a cada POP, o elemento retirado é inserido em uma árvore de busca binária. Após a completa inserção de todos os elementos nesta árvore, são feitas buscas de números na mesma. O tempo médio de busca de um número nesta árvore é

Alternativas
Comentários
  • Letra C

    Quando forma removidos da pilha os números voltaram em ordem decrescente.
    Se inserir um lista decrescente em um arvore, teremos um árvore com um único ramo, semelhante a uma lista encadeada. A busca nessa estrutura é de ordem O(N)
  • Então o pior caso da busca binaria deveria ser O(n). Porem vi em muitas referencias que o pior caso é O(log n). Agora fiquei na duvida.
  • Oi Bruno!! O que acontece é que os elementos da pilha foram inseridos de forma linear na arvore, por isso é que a resposta é O(n).
    No caso da arvore binaria de pesquisa completa e balanceada a complexidade é esta que você disse O(log n).
  • Questão bem bolada que engana fácil se não estiver firme nos conceitos. Em uma árvore de busca binária balanceada, por definição, os elementos menores estão à esquerda de um nó e os maiores, à direita. Além disso, por ser balanceada (AVL), as alturas das duas sub-árvores a partir de cada nó diferem nó máximo em uma unidade. Desta forma, a complexidade de busca é O(log n) na base 2. Em outras palavras, a cada vez que dobra a quantidade de elementos, o número de operações de busca aumenta em um. Como nesta árvore os números foram inseridos a partir de uma pilha ordenada, a cada inserção - do maior para o menor valor - os nós posicionaram-se a esquerda do nó pai, formando uma árvore de um único ramo, ou seja, uma árvore que não está balanceada. Nestas condições, a busca se torna sequencial, sendo necessário, no pior caso, percorrer todos os elementos da árvore - O(n).

  • A primeira informação é que temos uma lista ordenada e cada elemento dessa lista é retirado e inserido em uma pilha, logo após são retirados da pilha, com isso obtemos a lista em ordem inversa, se inserirmos essa lista inversa em uma árvore obtemos uma árvore degenerada que tem complexidade de tempo O(N). Logo, resposta letra C)


ID
163681
Banca
CESGRANRIO
Órgão
Petrobras
Ano
2010
Provas
Disciplina
Algoritmos e Estrutura de Dados
Assuntos

Uma lista simplesmente encadeada pode ser transformada em uma lista duplamente encadeada em tempo O(1)

PORQUE

Para transformar uma lista simplesmente encadeada em duplamente encadeada basta fazer uma cópia invertida de cada ponteiro (o destino do novo ponteiro passa a ser a origem do ponteiro original e vice-versa) e existe um número constante e limitado de cópias a fazer.

Analisando as afirmações acima, conclui-se que

Alternativas
Comentários
  • A primeira afirmativa é falsa, pois o correto seria O(n)
    A segunda afirmativa deveria ser correta! Eu sei que minha lista tem tamanha N. Então o número de cópias seria limitado a N-1. Alguém sabe se foi anulado?
  • Se a lista tem tamanho N (um parâmetro de entrada) então não é constante.
  • Concordo que a segunda afirmativa parece correta.

  • Eu acredito que não seja possível transformar uma lista simplesmente encadeada em duplamente encadeada através de um procedimento seria necessário mudar a estrutura de dados então um procedimento em si não conseguiria fazer isso sozinho. Já a segunda afirmativa é um pouco duvidosa, pois não fica bem claro qual é esse ponteiro original. Na minha opinião não se poderia dizer que o ponteiro original é o ponteiro do elemento anterior vizinho que aponto para o próximo.

  • Uma lista encadeada pode ser transformada em uma lista duplamente encadeada. Assim, o tempo de inserção e retirada que um item no início e no final da lista ficam constantes, O(1). Porém, para tranformar cada item simplesmente encadeado em um duplamente encadeado, a lista deve ser percorrida do iníco ao fim, sendo tranformada nessa corrida. Por isso, não é de tempo ou complexidade constante, que é o que significa O(1), mas sim de complexidade variável, O(n).

    Com relação a segunda, não existe um número constante de cópias a se fazer. Limitado sim, 'n'. Se fosse constante, uma lista de 10 elementos levaria o mesmo tempo de uma lista de 20 para ser transformada de simplesmente para duplamente encadeada.

    Espero ter ajudado!
  • Na primeira, preciso percorrer toda a lista realizando as alterações necessárias, logo é O(n) (onde n é o tamanho da lista)

    Na segunda... gente... se preciso percorrer n elementos então não é uma constante limitada e sim uma variável, essa lista pode ter 1 elemento ou 1 milhão ou sejá lá quanto for preciso, logo o procedimento é O(n). Quando se fala em "constante", todo número constande de operações sequenciais terá complexidade O(1) pois sempre será aquele mesmo número de operações, independente do tamanho da lista passada.

ID
163984
Banca
FCC
Órgão
TJ-PI
Ano
2009
Provas
Disciplina
Algoritmos e Estrutura de Dados
Assuntos

É um método de pesquisa ou busca, cujo algoritmo parte do pressuposto de que o vetor está ordenado e realiza sucessivas divisões do espaço de busca, comparando o elemento buscado (chave) com o elemento no meio do vetor. Se o elemento do meio do vetor for a chave, a busca termina com sucesso. Caso contrário, se o elemento do meio vier antes do elemento buscado, então a busca continua na metade posterior do vetor. E finalmente, se o elemento do meio vier depois da chave, a busca continua na metade anterior do vetor. Trata-se do método denominado busca

Alternativas
Comentários
  • d-

    a busca binaria é umk algoritmo para encontrar um elemento em um array ORDENADO, baseado no esquema divide and conquer. sua complexidade em big o notation é [log2(n+1)] = [log2(n)+1]

  • Busca binária

    É o método que realiza a busca por um elemento, dividindo um vetor ordenado em duas partes e testando em qual delas o elemento deveria estar, procedendo da mesma forma para a parte provável, e assim, sucessivamente, até que o elemento seja encontrado. A utilização da busca binária diminui a complexidade da busca, mas não a da inserção ou da remoção.

    Complexidade:

    Pior caso: O(log n)

    Caso médio: O(log n)

    Melhor caso: 1

    Alternativa: D


ID
192928
Banca
FCC
Órgão
MPE-RN
Ano
2010
Provas
Disciplina
Algoritmos e Estrutura de Dados
Assuntos

São métodos (algoritmos) de busca em cadeias

Alternativas
Comentários
  • Resposta: Letra A: Boyer-Moore e Knuth-Morris-Pratt.

    Dica de livro completo sobre algoritmos:  http://www.gladsonroberto.com.br/posts/Algoritmos_teoria_e_Pratica.pdf

    Na página 730 tem algumas informações sobre Knuth-Morris-Pratt.

  • O algoritmo de Knuth–Morris–Pratt procura a ocorrência de uma "palavra" W dentro de uma "string de texto" S empregando a simples técnica de que quando aparece uma diferença, a palavra tem em si a informação necessária para determinar onde começar a próxima comparação.

    The Boyer–Moore string search algorithm is a particularly efficient string searching algorithm, and it has been the standard benchmark for the practical string search literature.[1] It was developed by Bob Boyer and J Strother Moore in 1977. The algorithm preprocesses the target string (key) that is being searched for, but not the string being searched in (unlike some algorithms that preprocess the string to be searched and can then amortize the expense of the preprocessing by searching repeatedly). The execution time of the Boyer-Moore algorithm can be sub-linear: it doesn't need to check every character of the string to be searched, but rather skips over some of them. Generally the algorithm gets faster as the key being searched for becomes longer. Its efficiency derives from the fact that with each unsuccessful attempt to find a match between the search string and the text it's searching, it uses the information gained from that attempt to rule out as many positions of the text as possible where the string cannot match.


ID
192931
Banca
FCC
Órgão
MPE-RN
Ano
2010
Provas
Disciplina
Algoritmos e Estrutura de Dados
Assuntos

Último dado armazenado é o primeiro a ser recuperado caracteriza a estrutura de dados do tipo

Alternativas
Comentários
  • * a) árvore:  Uma árvore é uma estrutura de dados em que cada elemento tem um ou mais elementos associados, podendo definir-se uma árvore recursivamente como:

    1. uma estrutura (uma árvore);
    2. um nó (designado por raiz), que contém a informação a armazenar e um conjunto finito de árvores (as sub-árvores).
    3. Não Existe árvores vazias, no minímo haverá um nó raiz(que não possui pai)

    Cada árvore tem apenas uma raiz. Além disso, os elementos associados a cada nó são habitualmente chamados de filhos desses nós. Os nós sem filhos de uma árvore são chamados de folhas.

    * b) pilha:  As pilhas são estruturas baseadas no princípio LIFO (last in, first out), na qual os dados que foram inseridos por último na pilha serão os primeiros a serem removidos. Existem duas funções que se aplicam a todas as pilhas: PUSH, que insere um dado no topo da pilha, e PULL, que remove o item no topo da pilha. Correta!

    * c) string: Não é uma estrutura de dados propriamente dita. Está mais para um tipo de dado. Geralmente os dados desse tipo são armazenados em estruturas de dados do tipo vetor (ou array).

    * d) fila: As filas são estruturas baseadas no princípio FIFO (first in, first out), em que os elementos que foram inseridos no início são os primeiros a serem removidos. Uma fila possui duas funções básicas: ENQUEUE, que adiciona um elemento ao final da fila, e DEQUEUE, que remove o elemento no início da fila. A operação DEQUEUE só pode ser aplicado se a fila não estiver vazia, causando um erro de underflow ou fila vazia se esta operação for realizada nesta situação.

    * e) boolean: Não é uma estrutura de dados propriamente dita. Está mais para um tipo de dado.
     

  • Só uma pequena correção... podem existir árvores vazias sim:

    Árvore binária é uma estrutura de dados caracterizada por:

    • Ou não tem elemento algum (árvore vazia).
    • Ou tem um elemento distinto, denominado raiz, com dois apontamentos para duas estruturas diferentes, denominadas sub-árvore esquerda e sub-árvore direita.

    http://pt.wikibooks.org/wiki/Algoritmos_e_Estruturas_de_Dados/%C3%81rvores_Bin%C3%A1rias


ID
201475
Banca
FCC
Órgão
BAHIAGÁS
Ano
2010
Provas
Disciplina
Algoritmos e Estrutura de Dados
Assuntos

Considere o algoritmo de busca:

Testar o elemento a m (a índice m) sorteado aleatoriamente e compará-lo ao argumento de busca x. Se o elemento for igual a x, a busca termina. Se menor que x todos os elementos com índices menores ou iguais a m podem ser descartados dos próximos testes e se for maior que x todos aqueles que possuem índices maiores ou iguais a m também podem ser descartados.

Tal algoritmo é denominado busca

Alternativas
Comentários
  •  a) linear: uma busca linear é realizada pela seleção de um elemento após o outros sendo que para selecionar o último elemento de uma estrutura com 10 elementos teria que percorrer todos os 9 primeiros elementos.

    b) em tabelas: este algoritmo de busca possui a característica de existência de índices para os elementos, também conhecida como busca indexada ou busca em tabelas hash. Caso queira selecionar um elemento X da tabela esse elemento passará por um processo de tradução em índice e irá diretamente buscar o elemento com apenas uma seleção(caso seja uma tabela resistente a colisões*)

    c) binária: a busca binária é definida pela seleção de elementos maiores ou menores que um dado índice da estrutura de dados. Por exemplo: se você está buscando um elemento X na estrutura de dados E inicialmente irá escolher algum elemento(E1) dessa estrutura(pode ser aleatoriamente este primeiro elemento). Logo em seguida irá ver se esse elemento E1 é maior ou menor que X, caso seja maior agora a busca ser realizará entre o próximo elemento maior que E1 e o último elemento de E, caso contrário entre o elemento anterior a E1(o primeiro menor que E1) e o primeiro elemento que E, definindo sempre um intervalo menor para a busca normalmente em metade dos elementos da primeira busca até encontrar, ou não, o elemento X.

    d)Knuth-Morris-Pratt: é um algoritmo de busca em cadeias ou strings

    e) Boyer-Moore: outro algoritmo de busca em cadeias ou strings

     

    *Resistência a colisões é uma importante propriedade de tabelas hash que mantém a complexidade de busca em O(1), ou seja apenas uma seleção para encontrar o elemento desejado.


ID
201478
Banca
FCC
Órgão
BAHIAGÁS
Ano
2010
Provas
Disciplina
Algoritmos e Estrutura de Dados
Assuntos

Uma proposição (uso em programação lógica) pode ser observada como uma declaração lógica que pode ou não ser verdadeira. Ela consiste em objetos e nas suas interrelações. A lógica formal foi desenvolvida para fornecer um método de descrição de proposições com o objetivo de permitir que estas, formalmente declaradas, sejam

Alternativas
Comentários
  • O que é a lógica formal?

    É a ciência das leis do pensamento e a arte de aplicá-los corretamente na procura e na demonstração da verdade. 

    Ao pensar nisso, podemos ver que o gabarito é a letra B - "verificadas quanto à validade".


ID
204715
Banca
CESPE / CEBRASPE
Órgão
Banco da Amazônia
Ano
2010
Provas
Disciplina
Algoritmos e Estrutura de Dados
Assuntos

Julgue os itens seguintes, relativos à lógica de programação e
construção de algoritmos.

Na construção de um algoritmo, é sempre possível substituir uma estrutura do tipo enquanto por uma estrutura do tipo para.

Alternativas
Comentários
  • ERRADO. Mas por que? Será que o CESPE está considerando a prática ou a teoria? Na teoria é possível sim substituir while por for.

    Ex.:

    Loop infinito:while(1) = for(;;)
     

  • Toda estrutura do tipo para pode ser representada por uma estrutura do tipo enquanto. Entretanto o oposto não é verdadeiro.

    Por exemplo, como representaria numa estrutura do tipo para a condição "ENQUANTO NÓ != NULL FAÇA"?

  • Eu errei esta questão, mas o comentário do colega Bruno Migowski, foi perfeita!

  • Bruno,

    nesse seu exemplo, usando o comando for não ficaria assim:

    for ( ; NO != NULL ; )
  • Na estrutura enquanto, pode-se GARANTIR que ele SEMPRE será executada PELO MENOS UMA VEZ (do... while).
  • Danilo, a estrutura que pode garantir que será realizado pelo menos uma vez é a estrutura faça ... enquanto e não a estrutura enquanto. São estruturas diferentes.
    Eu acho que a banca quer dizer por estrutura para não é um comando for e sim é uma estrutura do tipo:
    Para X de xi até xf Faça
       [bloco de instruções]
    Fim Para


    Só vejo essa explicação, vi essa estrutura na wikipedia.
  • Gabarito "E". Minha linha de raciocíno para responder essa questão foi: 
    "Na construção de um algortimo, só é possível substituir uma estrutura do tipo enquanto por uma estrutura do tipo para quando sabemos exatamente a quantidade de vezes que esse laço irá executar." 
  • É uma questão que depende do autor adotado. Ela é certa se considerarmos a prática e errada se considerarmos a teoria. Vejamos porque:
    Na prática: Como já dito acima, muitas linguagens de programação aceitam a construção for(ini;cond;valor). Essas estruturas podem, sem sombra de dúvidas, substituir sempre, em qualquer ocasião, uma estrutura while(cond). Para isso, basta que a ini seja ou nula ou igual à condição antes do while; cond seja a mesma condição e valor seja igual ao passo dentro da estrutura. Nessa ótica: certo.
    Na teoria: a estrutura para é definida da seguinte forma: para var  de ini até fim passo valor faça. Essa estrutura exige que se conheça o início ini e a condição de fim de antemão, enquanto a estrutura enquanto cond faça, não. Assim, loops que têm o fim incerto baseado em condições que não sejam iterativas (como citado, e.g. NÓ = NULO) não encontram descrição no modelo do para.
    Essa foi a solução que eu encontrei, depende do autor adotado. A notação do modelo teórico que citei encontra-se em :http://www.dca.ufrn.br/~xamd/dca0800/Cap06.pdf
  • Em CASOS GERAIS/NORMAL/PADRÃO, você não pode substituir o enquanto pelo para porque o enquanto possui um número indefinido de repetições, já o para possui um número definido, em CASOS EXCEPCIONAIS você pode substituir um pelo outro, como exemplificou o colega do primeiro comentário. A questão não especifica, então é no caso geral.

    ERRADO

  • me dê um while que eu não consiga substituir por for, cespe, desafio você a achar um while que não dê para substituir por for, PQP viu


ID
204718
Banca
CESPE / CEBRASPE
Órgão
Banco da Amazônia
Ano
2010
Provas
Disciplina
Algoritmos e Estrutura de Dados
Assuntos

Julgue os itens seguintes, relativos à lógica de programação e
construção de algoritmos.

Na definição de uma função, a passagem de parâmetros por referência possibilita que o valor de uma variável passado como argumento seja alterado na função, e sua alteração mantenha-se mesmo após a execução da função.

Alternativas
Comentários
  • Passagem de parâmetros

    Por referência: alterações dentro das funções se refletem fora dela

    Por valor: é feita uma cópia do valor passado para função. Ao término, o valor original mantêm seu valor fora da função.

  • É isso mesmo.

    Resposta: Certo

  • Item correto, uma vez que, ao passar por referência, passa-se a própria variável, podendo esta ser modificada.

    Quando a passagem de parâmetro ocorre por valor, aí sim somente o valor é passado, sem influenciar a variável.

    Item correto.

  • Sim, sem nenhum problema, este tipo de procedimento é comum em sistema de informações.

    Resposta: Certo

  • Bela explicação do professor. Muito elucidativo.

  • Explicação do professor:

    "É isso mesmo.

    Resposta: Certo"

    Gênio!

  • Muito esclarecedor o comentário do professor

  • se fosse errado:

    " não é isso.

    gabarito errado. "

    desse jeito até eu dou aula.

  • Pág. 156:

    Resumo das Definições, características e utilização de sub-rotinas na construção de algoritmos.

    O mecanismo de funcionamento de uma sub-rotina é iniciado quando se encontra um comando de invocação desta, durante a execução do algoritmo principal.

    A partir daí a execução do mesmo é interrompida e a seguir, passa-se à execução dos comandos do corpo da sub-rotina.

    Ao seu término, retoma-se a execução do algoritmo que o chamou (no caso, o algoritmo principal) no ponto onde foi interrompida (comando de chamada da sub-rotina) e prossegue-se pela instrução imediatamente seguinte.

    ---------------------------

    Essa invocação pode se dar também através dos parâmetros que são canais por onde os dados são transferidos pelo algoritmo chamador a uma sub-rotina, e vice-versa.

    Para que possa iniciar a execução das instruções em seu corpo, uma sub-rotina às vezes precisa receber dados do algoritmo que o chamou e, ao terminar sua tarefa, a sub-rotina deve fornecer ao algoritmo chamador os resultados da mesma.

    Esta comunicação bidirecional pode ser feita de dois modos que são

    por meio de variáveis globais ou

    por meio da passagem de parâmetros.

    As funções retornam um, e somente um, valor ao algoritmo chamador enquanto os procedimentos retornam zero (nenhum) ou mais valores ao algoritmo chamador. Na realidade, a tarefa desempenhada por uma sub-rotina do tipo função pode perfeitamente ser feita por outra do tipo procedimento (o primeiro é um caso particular deste).

    ------------------------

    Os Parâmetros formais são os nomes simbólicos introduzidos no cabeçalho de sub-rotinas, usados na definição dos parâmetros do mesmo.

    Dentro de uma sub-rotina trabalha-se com estes nomes da mesma forma como se trabalha com variáveis locais ou globais.

    Já os Parâmetros reais são aqueles que substituem os parâmetros formais quando da chamada de uma sub-rotina.

    -------------------------

    Na passagem de parâmetros por valor (ou por cópia) o parâmetro real é calculado e uma cópia de seu valor é fornecida ao parâmetro formal, no ato da invocação do sub-rotina.

    A execução do sub-rotina prossegue normalmente e todas as modificações feitas no parâmetro formal não afetam o parâmetro real.

    Já no mecanismo de passagem de parâmetros por referencia, o espaço de memória ocupado pelos parâmetros reais é compartilhado pelos parâmetros formais correspondentes.

    Assim, as eventuais modificações feitas nos parâmetros formais também afetam os parâmetros reais correspondentes."

    No capítulo vem mais explicado, com exemplos.

    Fonte:

    Batista, Rogério da Silva

    Lógica de programação / Rogério da Silva

    Batista. – Teresina : Instituto Federal de Educação, Ciência e

    Tecnologia do Piauí, 2013.

  • Esse comentário do professor merece aplausos. kkkkkk pqp

  • É essa p#* aí.. fo#$+_se..

    Kkk

  • Comentário do professor desanima muito. Fiquei na impressão de que nem ele sabe o porquê da resposta.

  • parece brincadeira o comentário do professor.

  • Passagem por valor – permite usar dentro de uma função uma cópia do valor de uma variável, porém não permite alterar o valor da variável original (somente a cópia pode ser alterada).

    Passagem por referência – É passada para a função uma referência da variável, sendo possível alterar o conteúdo da variável original usando-se esta referência.

  • Vlw Professor, ajudou MUITO !

  • É uma vergonha esse comentário do professor. Falta de respeito com os usuários do QC.

  • Na passagem de parâmetros por valor, a variável passada como parâmetro passa apenas o seu valor para o outro módulo, não sofrendo modificações no seu módulo de origem.

    Na passagem de parâmetros por referênciao parâmetro passado é, na verdade, um ponteiro (endereço de memória) que aponta para a própria variável. Ou seja, caso o parâmetro passado sofra modificações, a variável também muda o seu valor.

  • Pra quem está achando o comentário do professor, nesse exercício, um absurdo, veja abaixo os exemplos que mostram a diferença entre as variáveis, que está no pdf do Direção Concursos. Os exemplos são idênticos, não há diferença. Esse material que o aluno paga para ter...e esses tipos de erros crassos são encontrados em diversas matérias...lamentável.

    Algoritmo VALOR

    VAR TESTE:inteiro 

    INICIO

    TESTE ← 30;

    MANIPULA_VARIAVEL(TESTE);

    ESCREVA(TESTE);

    FIM

    Algoritmo MANIPULA_VARIAVEL(X:inteiro)

    INICIO

    X ← X + 10;

    ESCREVA(X); 

    FIM 

    _____________________________________________

    Algoritmo REFERENCIA

    VAR TESTE:inteiro 

    INICIO

    TESTE ← 30;

    MANIPULA_VARIAVEL(TESTE);

    ESCREVA(TESTE);

    FIM

    Algoritmo MANIPULA_VARIAVEL(X:inteiro)

    INICIO

    X ← X + 10;

    ESCREVA(X); 

    FIM 

  • Não gostou da resposta do professor? BEM VINDO À EXATAS!

    E aviso de antemão que é melhor não reclamar, pois ele respondeu. Poderia muito bem ter informado "eu deixei esse para vocês procurarem e aprenderem sozinhos"!

  • Nem o prof entendeu

  • Absurdo o comentário desse professor. Vou tentar ajudar.

    A palavra POSSIBILITA é a chave para a resolução. Por exemplo no Python, em regra, a alteração do valor da variável fica apenas dentro da função, não sendo passado para fora da função.

    exemplo da regra.

    def minhaFuncao(y):

    x = y + y #Escopo Local

    print(x)

    return x

    x = 5 #Escopo Global

    minhaFuncao(x) #vai imprimir o valor de x dentro da função que é 5+5 =10

    print(x) #vai imprimir o valor de x fora da função que é 5

    Porem é possível declarar a variável x como global, mesmo dentro da função, POSSIBILITANDO a passagem desse valor para fora da função.

    def minhaFuncao(y):

       global x

       x = y + y #Escopo Local

       print(x)

       return x

    x = 5

    minhaFuncao(x) #quando chamo a função, o valor de x é alterado dentro e fora da função (global)

    print(x) # como x foi alterado globalmente, seu valor agora é 10

    Na definição de uma função, a passagem de parâmetros por referência possibilita que o valor de uma variável passado como argumento seja alterado na função, e sua alteração mantenha-se mesmo após a execução da função.

    Logo, assertiva CERTA, pois é possível manter a alteração de valor feita dentro da função.

    Espero ter ajudado.

  • Parem de reclamar do professor e vão estudar!

  • Tô passando mal de rir com geral falando dos comentários do professor!!!

  • Existem 2 tipos de passagem de parâmetros, por valor e por referência.

    No caso da passagem por valor, caso a variável passe por mudanças em uma "subfunção", seu valor na "função mãe" será aquele mesmo inicial (antes de entrar na "subfunção"). Conforme exemplo abaixo

    funçãoA

    INÍCIO

    VAR x: INTEIRO

    x := 10

    funçãoB (x)

    ESCREVA (x)

    funçãoB (x:INTEIRO)

    x:= x + 15

    ESCREVA (x)

    No exemplo acima os valores escritos seriam 25 (output da funçãoB) e 10 (output da funçãoA).

    Já na passagem por referência (caso da questão em tela), o valores alterados seguem na "função mãe" após serem alterados na "subfunção". Utilizando o mesmo exemplo acima, mas com passagem de parâmetros por referência teríamos:

    funçãoA

    INÍCIO

    VAR x: INTEIRO

    x := 10

    funçãoB (x)

    ESCREVA (x)

    funçãoB (x:INTEIRO)

    x:= x + 15

    ESCREVA (x)

    Nesse caso os valores escritos seriam os mesmos, 25 (output da funçãoB) e 25 (output da funçãoA). Isso pois na passagem de parâmetros por referência a alteração do parâmetro é mantida na "função mãe".

    Espero que eu tenha conseguido esclarecer


ID
204724
Banca
CESPE / CEBRASPE
Órgão
Banco da Amazônia
Ano
2010
Provas
Disciplina
Algoritmos e Estrutura de Dados
Assuntos

Julgue os itens seguintes, relativos à lógica de programação e
construção de algoritmos.

Estruturas de repetição são usadas para que determinado bloco de comandos seja executado diversas vezes. A garantia de parada da repetição ocorre por meio de uma condição que é verificada a cada nova iteração. Dependendo do tipo de estrutura de repetição utilizado, o bloco de comandos é executado pelo menos uma vez.

Alternativas
Comentários
  • Os comandos de repetição DO...WHILE são executados pelo menos 1 vez, pois os testes são feitos ao final do LOOP.

  • correto

    O while loop testa condicao antes de entrar no bloco.While true, do....

    O while tambem pode ser usado quando o n de interaçoes é desconhecido. No caso, a condição é testada depois de entrar no bloco, sendo que enquanto for false, vai continuar executando;

    o for loop é quando temos um n de repetições pre-definifdas

  • Discordo da questão pelo simples fato que dala deendendo do tipo de estrutura de dados, pois todas as estruturas realizam verificação para executar o laço no meu ponto de vista tal questão deveria ser cancelada ou a resposta seria como ERRADO. Independentimente como o colega falou abaixo que se o do { } while executa abaixo porem antes de entrar no while vai fazer a verificação se é realmente verdadeiro para executar o bloco de código.

  • Quando se utiliza o repeat until, o bloco de comandos será executado pelo menos uma vez.

    Resposta: Certo

  • Correta. Quando se utiliza o repeat until, o bloco de comandos será executado pelo menos uma vez.

  • Corretíssimo, conforme vimos em nossa aula, existem blocos de repetições que são executados somente uma única vez, a exemplo para que não esqueçam, visite a página de nossa aula de nº 15.

    Resposta: Certo

  • GABARITO: Correto

    Quando se utiliza o REPEAT UNTIL, o bloco de comandos será executado pelo menos uma vez.

  • Estruturas de repetição

    É possível colocar um trecho de código em “loop”, ou laço de repetição, executando até que uma condição seja atingida, ou enquanto uma condição permanecer válida.

    Comando enquanto (while): Essa estrutura tem por característica verificar a condição de execução de seu código ANTES de executá-lo.

    Repeat until: executará até que a condição seja verdadeira. Obrigatoriamente ele deverá ser executado pelo menos uma vez, já que a verificação ocorre somente no final. Quando se utiliza o while, caso a condição imposta seja falsa, logo no começo, o laço sequer é executado! 

    Break:  é um comando que interrompe estruturas de repetição.

  • esse comentário do gustavo pinheiro foi cirurgico. parabens!

  • Dependendo do tipo de estrutura o comando será repetido pelo menos uma vez, como no caso do DO/WHILE (entrará no loop e depois verificará - então é no mínimo uma vez).

    Porém há estruturas em que nem uma iteração pode ocorrer, no caso de um IF (se não satisfizer a condição nem entrará no loop).


ID
204727
Banca
CESPE / CEBRASPE
Órgão
Banco da Amazônia
Ano
2010
Provas
Disciplina
Algoritmos e Estrutura de Dados
Assuntos

Julgue os itens seguintes, relativos à lógica de programação e
construção de algoritmos.

Variáveis declaradas dentro de funções ou procedimentos são chamadas de variáveis locais e não são visíveis por outras funções. Por esse motivo, não é possível declarar variáveis que possam ser utilizadas por qualquer função de um programa.

Alternativas
Comentários
  • ERRADO. Podemos declara uma variável global cujo escopo seja todo o programa, inclusive suas diversas funções.

  • Errado. Isso é absolutamente possível utilizando-se variáveis globais.
  • É possível por meio de variáveis globais.

    Resposta: Errado

  • Errada.  É perfeitamente possível. Basta declarar variáveis globais.

  • Assertiva correta, as variáveis que são declaradas fora das funções e procedimentos locais são as globais.

    Resposta: Certo

  • Resumindo: Uma coisa é uma coisa e outra coisa é outra coisa.

    Gabarito: Errado


ID
209191
Banca
CESPE / CEBRASPE
Órgão
Banco da Amazônia
Ano
2010
Provas
Disciplina
Algoritmos e Estrutura de Dados
Assuntos

Acerca das estruturas de informação, julgue os itens a seguir.

Entre os comandos básicos para a descrição de algoritmos, para que a execução de uma malha seja interrompida e seja executado o comando imediatamente seguinte, utiliza-se dentro da malha, o comando saia, também conhecido como escape de malha.

Alternativas
Comentários
  • comando saia, também conhecido como escape de malha.


ID
209206
Banca
CESPE / CEBRASPE
Órgão
Banco da Amazônia
Ano
2010
Provas
Disciplina
Algoritmos e Estrutura de Dados
Assuntos

Acerca de pesquisa de dados e de operações básicas sobre
estruturas, julgue os itens que se seguem.

A pesquisa sequencial é aplicável em estruturas não ordenadas.

Alternativas
Comentários
  • Se os registros não estão ordenados, você precisa percorrer todos até encontrar o que busca. Se estivessem ordenados, poderíamos fazer uma busca binária.

  • Assertiva CORRETA.

    Oalgoritmo de busca sequêncial pode ser executado em um vetor não ordenado e em um vetor ordenado.

    Em um vetor  não ordenado,será  buscado  o número até que ele seja encontrado ou até se chegar ao final do vetor.

    Em um vetor ordenado,será buscado o número até que ele seja encontrado e enquanto for maior que o número do vetor.

    Fonte: Estrutura de Dados (Ana Fernanda Gomes - 2011)

    Bons estudos.
  • Acesso seqüencial: o arquivo é lido registro por registro até o registro desejado ser encontrado. Essa é a forma menos eficiente de acesso, mas algumas situações favorecem o seu uso, como a busca por texto (comando grep) ou quando um arquivo possui poucos registros.

  • CORRETO.

     

    Pesquisa SEQUENCIAL:

    A busca é simples e pode ser aplicada em estruturas ordenadas ou não.

     

    obs. Caso tivesse falando da busca BINÁRIA, aí sim, exige uma estrutura ordenada.


ID
209209
Banca
CESPE / CEBRASPE
Órgão
Banco da Amazônia
Ano
2010
Provas
Disciplina
Algoritmos e Estrutura de Dados
Assuntos

Acerca de pesquisa de dados e de operações básicas sobre
estruturas, julgue os itens que se seguem.

Na pesquisa binária, realiza-se a varredura de uma estrutura de dados desde o seu início até o final dessa estrutura, ou até que uma informação desejada seja encontratada.

Alternativas
Comentários
  • Errado. A pesquisa binária não faz varredura do início ao fim. Quem faz isso é a pesquisa sequencial.

    Busca binária: A pesquisa ou busca binária (em inglês binary search algorithm ou binary chop) é um algoritmo de busca em vetores que requer acesso aleatório aos elementos do mesmo. Ela parte do pressuposto de que o vetor está ordenado e realiza sucessivas divisões do espaço de busca (divisão e conquista) comparando o elemento buscado (chave) com o elemento no meio do vetor. Se o elemento do meio do vetor for a chave, a busca termina com sucesso. Caso contrário, se o elemento do meio vier antes do elemento buscado, então a busca continua na metade posterior do vetor. E finalmente, se o elemento do meio vier depois da chave, a busca continua na metade anterior do vetor.

    Fonte: pt.wikipedia.org/wiki/Pesquisa_bin%C3%A1ria

    Busca sequencial: Na área de informática, ou Ciência da Computação, costuma-se usar o termo busca linear (ou busca sequêncial) para expressar um tipo de pesquisa em vetores ou listas de modo sequencial, i. e., elemento por elemento, de modo que a função do tempo em relação ao número de elementos é linear, ou seja, cresce proporcionalmente. Num vetor ordenado, essa não é a pesquisa mais eficiente, a pesquisa (ou busca) binária, por exemplo, é um tipo de pesquisa com o gráfico de tempo logarítmo.

    Fonte: pt.wikipedia.org/wiki/Busca_linear

     

  • Não! O correto seria:

    Na pesquisa sequencial, realiza-se a varredura de uma estrutura de dados desde o seu início até o final dessa estrutura, ou até que uma informação desejada seja encontratada (inclusive há um erro ortográfico na questão: "encontratada").
  • Gabarito Errada

    pesquisa ou busca binária (em inglês binary search algorithm ou binary chop) é um algoritmo de busca em vetores que segue o paradigma de divisão e conquista. Ela parte do pressuposto de que o vetor está ordenado e realiza sucessivas divisões do espaço de busca comparando o elemento buscado (chave) com o elemento no meio do vetor. Se o elemento do meio do vetor for a chave, a busca termina com sucesso. Caso contrário, se o elemento do meio vier antes do elemento buscado, então a busca continua na metade posterior do vetor. E finalmente, se o elemento do meio vier depois da chave, a busca continua na metade anterior do vetor.

     

     

     

    "Retroceder Nunca Render-se Jamais !"
    Força e Fé !
    Fortuna Audaces Sequitur !

  • (ERRO EM VERMELHO) Na pesquisa binária, realiza-se a varredura de uma estrutura de dados desde o seu início até o final dessa estrutura, ou até que uma informação desejada seja encontratada.

     

    OBS1. Questão aborda o conceito de BUSCA SEQUENCIAL.

    OBS2. Seria pesquisa binária se o conceito viesse falando que o vetor será quebrado ao meio e analisado se o valor procurado está acima ou abaixo do meio do vetor.


ID
209212
Banca
CESPE / CEBRASPE
Órgão
Banco da Amazônia
Ano
2010
Provas
Disciplina
Algoritmos e Estrutura de Dados
Assuntos

Acerca de pesquisa de dados e de operações básicas sobre
estruturas, julgue os itens que se seguem.

Na pesquisa por meio de interpolação, é possível realizar o cálculo da posição aproximada em que se encontra determinada chave em uma estrutura para que a distância entre a menor chave e a chave desejada seja proporcional à distância entre a menor e a maior chave do intervalo.

Alternativas
Comentários
  • Certo.

    Tipos de Algoritmos de pesquisa:

    • Pesquisa linear
    • Pesquisa binária
    • Pesquisa por interpolação
    • Pesquisa por tabelas de dispersão
    • Pesquisa de sequências de caracteres

    Pesquisa por interpolação: Variante da pesquisa binária em que escolhe o elemento a verificar de acordo com a interpolação. Por exemplo, é utilizado pelas pessoas quando procuram uma palavra no dicionário.


ID
209215
Banca
CESPE / CEBRASPE
Órgão
Banco da Amazônia
Ano
2010
Provas
Disciplina
Algoritmos e Estrutura de Dados
Assuntos

Acerca de pesquisa de dados e de operações básicas sobre
estruturas, julgue os itens que se seguem.

Quando um algoritmo recursivo recebe como parâmetro o trecho do vetor no qual deve ser realizada a pesquisa, então essa pesquisa é do tipo sequencial.

Alternativas
Comentários
  •  O tipo da pesquisa é binário.

  • Pode ser uma pesquisa sobre uma árvore binária.

  • Sugestão de resposta:

    "Quando um algoritmo recursivo recebe como parâmetro o trecho do vetor no qual deve ser realizada a pesquisa, então essa pesquisa é do tipo sequencial particionada."
  • Também pensei na binária.


ID
209221
Banca
CESPE / CEBRASPE
Órgão
Banco da Amazônia
Ano
2010
Provas
Disciplina
Algoritmos e Estrutura de Dados
Assuntos

Em relação à classificação de dados e tipos abstratos de dados
(TADs), julgue os itens subsequentes.

A classificação interna por inserção é um método que realiza a ordenação de um vetor por meio da inserção de cada elemento em sua posição correta dentro de um subvetor classificado.

Alternativas
Comentários
  • Essa questão se refere ao INSERTION SORT.

    Este método de ordenação percorre o vetor original e vai montando um vetor secundário de forma ordenada.


ID
209224
Banca
CESPE / CEBRASPE
Órgão
Banco da Amazônia
Ano
2010
Provas
Disciplina
Algoritmos e Estrutura de Dados
Assuntos

Em relação à classificação de dados e tipos abstratos de dados
(TADs), julgue os itens subsequentes.

A escolha de estruturas internas de dados utilizados por um programa pode ser organizada a partir de TADs que definem classes de objetos com características distintas.

Alternativas
Comentários
  • O correto seria: "... classes de objetos com características ***semelhantes***."

  • Geralmente,   um módulo agrupa vários tipos e funções com funcionalidades relacionadas  , caracterizando assim uma finalidade bem definida. Nos casos em que um módulo define um novo tipo de dados e o conjunto de operações para manipular dados desse tipo, dizemos que o módulo representa um tipo abstrato de dados(TAD). Nesse contexto, abastrato significa "esquecida a forma de implementação", ou seja, um TAD é descrito pela finalidade do tipo e de suas operações, e não pela forma como está implementado.

    Introdução a Estrutura de dados - Cerqueira, Renato e Rangel - 2004.

  • Um tipo abstrato de dados encapsula estruturas de dados com características semelhantes entre si. Imaginem um módulo ou classe que calcula digitos verificadores e que também faz também validação de datas! Não faz sentido! 
     

  • (ERRO EM VERMELHO) A escolha de estruturas internas de dados utilizados por um programa pode ser organizada a partir de TADs que definem classes de objetos com características distintas.

     

    ---> As características são SEMELHANTES, pois precisam obedecer os traços do tipo de dados que vou organizar.

     

    Exemplo: Dados de um aluno de uma faculdade: nome do aluno, idade dele, curso que frequenta, notas.... Repare que não são características distintas, com fins diversos, todas elas tem em comum os dados serem compostos por um aluno de uma faculdade.


ID
209227
Banca
CESPE / CEBRASPE
Órgão
Banco da Amazônia
Ano
2010
Provas
Disciplina
Algoritmos e Estrutura de Dados
Assuntos

Em relação à classificação de dados e tipos abstratos de dados
(TADs), julgue os itens subsequentes.

A descrição dos parâmetros das operações e os efeitos da ativação das operações representam, respectivamente, os níveis sintático e semântico em que ocorre a especificação dos TDAs.

Alternativas
Comentários
  • O nível sintático está relacionado à estrutura do código. Se a forma como os parâmetros são descritos está correta: tipo do parâmetro + nome parâmetro + "virgula se não for último". 

    Na referida questão, é correto afirmar que a descrição dos parâmetros é realizada no nível sintático.

     

    O nível semântico está relacionado à lógica do programa. É neste nível em que os efeitos das operações são avaliados.


ID
215617
Banca
CESPE / CEBRASPE
Órgão
MPU
Ano
2010
Provas
Disciplina
Algoritmos e Estrutura de Dados
Assuntos

No que se refere à lógica de programação, julgue o item a seguir.

Em um algoritmo, uma expressão geralmente é considerada válida quando as suas variáveis e constantes respeitam o número e os tipos de argumentos das operações envolvidas.

Alternativas

ID
215620
Banca
CESPE / CEBRASPE
Órgão
MPU
Ano
2010
Provas
Disciplina
Algoritmos e Estrutura de Dados
Assuntos

No que se refere à lógica de programação, julgue o item a seguir.

O método de pesquisa binária de cálculo de endereço é empregado tanto para a pesquisa quanto para a organização física de tabelas.

Alternativas
Comentários
  • O método de pesquisa binária, como o nome próprio diz, é usado SOMENTE para buscas.

    Mais informações: http://en.wikipedia.org/wiki/Binary_search_algorithm 

  • Método de Pesquisa Sequencial (PS) = Percorre o vetor, elemento por elemento, verificando se o elemento desejado está presente no vetor.

                    1   2    3    4    5
    Vetor -> [5][99][15][77][35]

    Método de Pesquisa Binária (PB) = Consiste em comparar alguns itens do vetor com o dado (chave alvo) que deseja-se encontrar.
    Premissa: os dados contidos no vetor já estão ordenados segundo um critério.
                          (ponto médio)
                    1    2   3  | 4      5
    vetor -> [5][15][35][77][99]
     

  • Karol,
    Concordo que o vetor já esteja ordenado e que não é necessária a organização.
    No entanto, para realizar um inserção ou exclusão de itens será necessário realizar uma busca binária para encontrar a posição que se queira realizar a operação.
    Não dá para saber o que os caras do CESPE queriam dizer com a assertiva.

ID
215626
Banca
CESPE / CEBRASPE
Órgão
MPU
Ano
2010
Provas
Disciplina
Algoritmos e Estrutura de Dados
Assuntos

No que se refere à lógica de programação, julgue o item a seguir.

Se um trecho de algoritmo tiver de ser executado repetidamente e o número de repetições for indefinido, então é correto o uso, no início desse trecho, da estrutura de repetição Enquanto.

Alternativas
Comentários
  • Correto a questão!

    Enquanto é exatamente para quando não se sabe quantas vezes será a iteração. Mas é necessário uma condição no início do laço que verifica se continua ou não a iteração. Ao contrário de Repita, que passa pela iteração ao menos uma vez, o enquanto, se já possuir a condição de saída antes de entrar no laço, este não será realizado!


ID
215632
Banca
CESPE / CEBRASPE
Órgão
MPU
Ano
2010
Provas
Disciplina
Algoritmos e Estrutura de Dados
Assuntos

No que se refere à lógica de programação, julgue o item a seguir.

O método recursivo que utiliza pilhas para executar um procedimento geralmente é automático, de modo que os compiladores podem acionar os procedimentos préprogramados para manipular essas pilhas.

Alternativas
Comentários
  • recursividade é a definição de uma subrotina (função ou método) que pode invocar a si mesma.

    Praticamente todas as linguagens de programação usadas hoje em dia permitem a especificação direta de funções e procedimentos recursivos. Quando uma função é invocada, o computador (na maioria das linguagens sobre a maior parte das arquiteturas baseadas em pilhas) ou a implementação da linguagem registra as várias instâncias de uma função (em muitas arquiteturas, usa-se uma pilha de chamada, embora outros métodos possam ser usados). Reciprocamente, toda função recursiva pode ser transformada em uma função iterativa usando uma pilha.

    http://pt.wikipedia.org/wiki/Recursividade_%28ci%C3%AAncia_da_computa%C3%A7%C3%A3o%29

  • Tá, mas o compilador na hora de gerar o assembly ainda tem que ir lá e empilhar parâmetros, depois call depois desempilhar algo ou pegar o retorno, ou não? Não me parece tão automático assim do ponto de vista do compilador


ID
215635
Banca
CESPE / CEBRASPE
Órgão
MPU
Ano
2010
Provas
Disciplina
Algoritmos e Estrutura de Dados
Assuntos

No que se refere à lógica de programação, julgue o item a seguir.

A pesquisa sequencial de uma tabela, ou seja, pela comparação do argumento da pesquisa com a chave de cada entrada, terá o desempenho reduzido se a tabela for ordenada a partir do valor da chave.

Alternativas
Comentários
  • Método de Pesquisa Sequencial (PS) = Percorre o vetor, elemento por elemento, verificando se o elemento desejado está presente no vetor.

    Vetor ->   1    2    3    4    5
                    [5][99][15][77][35]

    Se a valor chave estiver ordenado não precisará percorrer toda a tabela, caso o  valor procurado seja o último.

     

     

  • A questão fala que o desempenho será menor se a tabela for ordenada pelo valor da chave. ERRADO

    Como a busca está sendo feita na chave, a ordenação do valor da chave não vai afetar no desempenho da busca sequencial.

ID
224533
Banca
FCC
Órgão
METRÔ-SP
Ano
2010
Provas
Disciplina
Algoritmos e Estrutura de Dados
Assuntos

Objeto que se constistui parcialmente ou é definido em termos de si próprio. Nesse contexto, um tipo especial de procedimento (algoritmo) será utilizado, algumas vezes, para a solução de alguns problemas. Esse procedimento é denominado

Alternativas
Comentários
  • Gabarito: D

    Um objeto é dito recursivo se ele consistir parcialmente ou for definido em termos de si próprio. Nesse contexto, um tipo especial de procedimento (algoritmo) será utilizado, algumas vezes, para a solução de alguns problemas. Esse procedimento é denominado recursivo. 


    Fonte: http://www.rcosta62br.unifei.edu.br/ccf120/aula_5.pdf
  • Estudar sobre características de recursividade
  • Muito obrigado pelos comentários, foram bastante proveitosos.

ID
226267
Banca
CESGRANRIO
Órgão
EPE
Ano
2010
Provas
Disciplina
Algoritmos e Estrutura de Dados
Assuntos

Um programador decidiu utilizar, em determinado sistema de análise estatística, uma árvore AVL como estrutura de dados. Considerando-se n a quantidade de elementos dessa árvore, o melhor algoritmo de pesquisa, com base em comparações, possui complexidade de tempo, no pior caso, igual a

Alternativas
Comentários

  • A propósito, o simbolo da ferradura (ÔMEGA) refer-se ao melhor caso, o do sandwich (TETA) ao caso médio e o BIG-O , O(n) ao pior caso.

    A  árvore AVL é uma árvore binária de busca balanceada.

    Árvores binárias de busca não balanceadas podem - no pior caso - crescer apenas para um lado transformando-se em uma lista. Nesse caso o tempo de busca torna-se O(n), onde n é o tamanho da lista.

    No caso da arvore AVL, que garante uma árvore com fator de desbalanceamento no máximo 1, isto á  | alturaDaSubarvoreDireita - alturaDaSubarvoreEsquerda | <= 1 , para todos os nós, o pior caso do algoritmo torna-se O( log n), ou seja, o elemento procurado é uma folha da arvore, e a altura de uma arvore de n elementos é log n.

    OBS: log n , sendo log na base 2, não na base 10.
  • A complexidade no pior caso a árvore AVL é  O( log n)


ID
229873
Banca
UFF
Órgão
UFF
Ano
2009
Provas
Disciplina
Algoritmos e Estrutura de Dados
Assuntos

O tipo de algoritmo cuja legibilidade depende muito de sua forma, incluindo aspectos de sua disposição em parágrafos (recuos), é conhecido como:

Alternativas
Comentários
  • Por mais inacreditável que possa parecer existe uma padronização de "portugol" chamado de G-Portugol licenciado sobre GPL2

    Site Oficial do projeto:
    http://gpt.berlios.de/site/
  • Portugol é um pseudocódigo (simbiose de português com algol) que permite ao projetista apresentar a solução lógica (voltada ao problema, não a qualquer linguagem ou a qualquer máquina) que, porém, adicionalmente, oferece a toda facilidade para conversão a qualquer código de programação. A legibilidade de um algoritmo em Portugol depende muito de sua forma, incluindo aspectos de suas disposições em parágrafos, a que se denominou recuo. Portanto, deve-se observar com rigor formas padronizadas para as diversas estruturas básicas


ID
230020
Banca
FUNCAB
Órgão
PRODAM-AM
Ano
2010
Provas
Disciplina
Algoritmos e Estrutura de Dados
Assuntos

Em relação aos procedimentos e funções, pode-se afirmar que:

Alternativas
Comentários
  •     1. As funções são avaliadas e retornam um valor  ao programa que as chama, além dos possíveis parâmetros de saída.
        2. Um procedimento não retorna valor nenhum, a função obrigatoriamente retorna um valor a uma determinada variável.
        3. Uma função é ativada quando é avaliada uma expressão que a contém, isto é, as funções são utilizadas da mesma forma que as funções predefinidas, como SQR, ORD, LN etc.
        4. Um procedimento é ativado através de um comando de chamada do procedimento.

ID
230032
Banca
FUNCAB
Órgão
PRODAM-AM
Ano
2010
Provas
Disciplina
Algoritmos e Estrutura de Dados
Assuntos

A técnica que é utilizada para obtenção de um novo arquivo único, a partir de dois ou mais arquivos que contenham registros de mesmo tipo, estando esses arquivos classificados segundo um mesmo critério pela mesma chave, é conhecida como:

Alternativas
Comentários
  • A partir do SQL Server 2008 podemos utilizar um conceito de mesclagem muito útil. Trata-se do comando Merge, que permite trabalhar com Update, Insert e Delete numa única instrução. Dessa forma, a partir de uma tabela de origem, “dizemos” ao SQL Server o que ele deverá fazer quando encontrar e quando não encontrar registros correspondentes entre esta tabela (de origem) e a tabela de destino.

    Isto é muito últil quando temos uma tabela com vários registros (provenientes de uma importação, por exemplo) e precisamos “ajeitar” a tabela definitiva, que está no banco, de acordo com estas informações. Ou seja, incluir os registros inexistentes, atualizar os que já existem e, talvez, remover os registros que estão na base e que não se encontram nesta “nova tabela”.

    Fonte: http://robersonferreira.com.br/merge_parte1/

    Bons Estudos !


ID
235483
Banca
MS CONCURSOS
Órgão
CODENI-RJ
Ano
2010
Provas
Disciplina
Algoritmos e Estrutura de Dados
Assuntos

É a descrição de um padrão de comportamento, expressado em termos de um repertório bem definido e finito de ações " primitivas" , das quais damos por certo que elas podem ser executadas. A descrição refere-se a:

Alternativas
Comentários
  • Resposta b)

    Algoritmo é uma sequência finita de instruções bem definidas e não ambíguas, cada uma das quais pode ser executada mecanicamente num período de tempo finito e com uma quantidade de esforço finita.

    Compilador é um programa de computador (ou um grupo de programas) que, a partir de um código fonte escrito em uma linguagem compilada, cria um programa semanticamente equivalente, porém escrito em outra linguagem, código objeto.

    Modularização usa de uma técnica de refinamentos sucessivos nos possibilita, já nas etapas iniciais do desenvolvimento
    de uma solução para um problema computacional, certas abstrações sobre as tarefas a serem executadas
    no algoritmo.

     


ID
238267
Banca
CESPE / CEBRASPE
Órgão
ABIN
Ano
2010
Provas
Disciplina
Algoritmos e Estrutura de Dados
Assuntos

Acerca de programas aplicativos e das arquiteturas de
computadores, julgue os próximos itens.

Os tipos de dados enumerados podem ser usados, por exemplo, para se referir a valores constantes associados a variáveis relacionadas a configurações do sistema ou a dispositivos de hardware.

Alternativas
Comentários
  • Certo.
    O tipo enum é um conjunto de constantes inteiras que especifica todos os valores legais que uma variável desse tipo pode ter. A ideia central é que cada simbolo na enumeração é um inteiro constante.
    Normalmente os projetos de sistema operacionais usam struturas para definir as configurações do sistema e hardware, no entanto nada impede que em alguma confuguração o enum possa ser usado.
  • a dispositivos de Hardware?


    WTF??
  • Prezados,

    Uma enumeração é um tipo de dado, cujos valores são atribuídos a um elemento de um conjunto finito de identificadores. Por exemplo, podemos ter uma enumeração chamada booleana , com dois valores pre determinados ( Verdadeiro e Falso ).
    A enumeração pode sim ser associada para referir a valores constantes associados a variáveis de configurações do sistema , isso só não funcionaria se fossem valores variáveis pois não existiria garantia que o valor da variável estaria contido na enumeração.

    Portanto a questão está correta.


ID
238297
Banca
CESPE / CEBRASPE
Órgão
ABIN
Ano
2010
Provas
Disciplina
Algoritmos e Estrutura de Dados
Assuntos

A respeito dos métodos de ordenação, pesquisa e hashing, julgue
os seguintes itens.

A eficácia do método de ordenação rápida (quicksort) depende da escolha do pivô mais adequado ao conjunto de dados que se deseja ordenar. A situação ótima ocorre quando o pivô escolhido é igual ao valor máximo ou ao valor mínimo do conjunto de dados.

Alternativas
Comentários
  • O quick sort executa o algoritmo escolhendo o método do melhor pivô. Se todo o pivô dividir a lista, aproximadamente, ao meio, a ordenação corre numa complexidade de: O(N * log(N) ). Este método é eficiente se a escolha do pivô um elemento cujo valor seja médio relativamente aos restantes

  • A  eficácia do método de ordenação rápida (quicksort) depende mais dos elementos do que do pivô. 
  •   O Quick Sort é um dos método mais rápidos de ordenação, apesar de às vezes partições desequilibradas poderem conduzir a uma ordenação lenta. Esse método de ordenação utiliza a técnica divide and conquer (dividir o problema inicial em dois subproblemas e resolver um problema menor utilizando a recursividade)
     
                Este método baseia-se na divisão da tabela em duas sub-tabelas, dependendo de um elemento chamado pivô, normalmente o 1º elemento da tabela. Uma das sub-tabelas contém os elementos menores que o pivô enquanto a outra contém os maiores. O pivô é colocado entre ambas, ficando na posição correcta. As duas sub-tabelas são ordenadas de forma idêntica, até que se chegue à tabela com um só elemento.
     
    Complexidade: caso médio O(N * log N)

    http://w3.ualg.pt/~hshah/ped/Aula%2014/Quick_final.htmlPS. o erro da questão é afirmar que é o valor max ou min, na verdade é o médio
  • Prezados,

    O algoritmo quicksort se baseia no paradigma de divisão e conquista, ordenando uma sequencia S de forma recursiva. A ideia principal é escolher um elemento de S ( chamado pivô ) e se cria 3 outras sequencias , L ( com todos os elementos menores que o pivô ) , E ( com todos os elementos iguais ao pivô ) , e G ( com todos os elementos maiores que o pivô ) , dai se ordena essas listas recursivamente, coloca-se de volta os elementos em S inserindo primeiro os elementos de L , em seguida os de E e por fim os de G. 
    Vemos que a escolha do pivô é determinante para a performance do algoritmo , e se o pivô escolhido for um valor das pontas ( valor máximo ou mínimo ) , o algoritmo terá o seu pior cenário.

    Portanto a questão está errada.

  • tem que decorar as complexidades de todos

     

    2017

    O algoritmo QuickSort usa uma técnica conhecida por divisão e conquista, onde problemas complexos são reduzidos em problemas menores para se tentar chegar a uma solução. A complexidade média deste algoritmo em sua implementação padrão e a complexidade de pior caso são, respectivamente,

     a) O(n-1) e Ο(n³).

     b) Ο(n²) e Ο(n log n²).

     c) O(n²) e O(n³).

     d) Ο(n) e Ο(n²).

     e) Ο(n log n) e Ο(n²).

     

  • Gabarito Errado

    QUICKSORT ---> complexidade no pior caso n2 e complexidade no melhor caso nlogn.

     

     

     

    "Retroceder Nunca Render-se Jamais !"
    Força e Fé !
    Fortuna Audaces Sequitur !

  • e-

    The best case for the algorithm occurs when all elements are equal (or are chosen from a small set of k ≪ n elements). In the case of all equal elements, the modified quicksort will perform only two recursive calls on empty subarrays and thus finish in linear time (assuming the partition subroutine takes no longer than linear time).

    https://en.wikipedia.org/wiki/Quicksort


ID
238300
Banca
CESPE / CEBRASPE
Órgão
ABIN
Ano
2010
Provas
Disciplina
Algoritmos e Estrutura de Dados
Assuntos

A respeito dos métodos de ordenação, pesquisa e hashing, julgue
os seguintes itens.

A estrutura de dados heap, que é eficiente para a implementação do método de ordenação heapsort, consiste em uma árvore binária completa e sua implementação mais simples ocorre na forma de array.

Alternativas
Comentários
  • O heapsort utiliza uma estrutura de dados chamada heap (monte), para ordenar os elementos à medida que os insere na estrutura. Assim, ao final das inserções, os elementos podem ser sucessivamente removidos da raiz da heap, na ordem desejada, lembrando-se sempre de manter a propriedade de max-heap.

    A heap pode ser representada como uma árvore (uma árvore binária com propriedades especiais[2]) ou como um vetor. Para uma ordenação crescente, deve ser construído um heap máximo (o maior elemento fica na raiz). Para uma ordenação decrescente, deve ser construído um heap mínimo (o menor elemento fica na raiz).

    Referência: http://pt.wikipedia.org/wiki/Heapsort

  • Minha dúvida está em:

    "...consiste em uma árvore binária completa..."

    pelo que vi, a definição de arvore completa depende de autor.
    alguns dizem que completa deve ser estritamente binária (cada nó tem 0 ou 2 filhos, não pode ter 1), e nesse caso, heap não é completa...
  • Fiquei com a mesma dúvida da laura.
  • Pessoal, vejam a relação entre Heapsort e Árvore Binária:

    http://www.das.ufsc.br/~camponog/Disciplinas/DAS-9003/slides_CLR/l8-trees-heaps.pdf
  • Passando as informações do link que o  Rogério enviou:

     

    Heaps
    - Um heap (binário) é uma estrutura de dados que pode ser vista como uma  arvore binária completa.
    - Cada nó da árvore corresponde a um elemento do vetor que armazena o valor do nó.
    - A árvore é completa em todos os níveis com exceção do nível mais baixo, o qual é completado da esquerda para a direita.
  • Prezados,

    Segundo André Backes, em seu livo Estrutura de dados descomplicada, o algoritmo heapsort, também conhecido como ordenação por heap, é um algoritmo de ordenação bastante sofisticado e que compete em desempenho com o quicksort. A ideia deste algoritmo é transformar o array de dados em uma estrutura do tipo heap, isto é , uma árvore binária completa. Essa estrutura permite a recuperação e remoção eficiente do elemento de maior valor do array. Desse modo podemos repetidamente "remover" o maior elemento da heap, construindo assim o array ordenado de trás pra frente.

    Portanto a questão está correta.

  • acho que era pra ser quase completa, não?


ID
238303
Banca
CESPE / CEBRASPE
Órgão
ABIN
Ano
2010
Provas
Disciplina
Algoritmos e Estrutura de Dados
Assuntos

A respeito dos métodos de ordenação, pesquisa e hashing, julgue
os seguintes itens.

Árvore binária é uma estrutura de dados adequada à representação de hierarquia, sendo usada frequentemente em ordenação e pesquisa. Para a busca em um vetor ordenado, pode-se utilizar o algoritmo de busca binária, o qual não exige a implementação de uma árvore binária.

Alternativas
Comentários
  • Para fazer a busca binário podemos usar um array.

    1 - Verificar se elemento buscado é maior que o elemento na metade do vetor.

    a - se não for, buscar na metade superior

    b - se for, buscar na metade inferior

    2 - Repetir passo 1 com a metade da lista escolhida.

    Este algoritomo permite busca binária sem implementação da árvore.

  • "Árvore binária é uma estrutura de dados adequada à representação de hierarquia, sendo usada frequentemente em ordenação e pesquisa."
    - uma árvore é perfeitamente adequada para representar uma hierarquia
    - árvore binária de busca (ou pesquisa) é uma árvore ordenada cujos nós a esquerda de um nó pai são menores que ele, e cujos nós a direita de um nó pai são maiores que ele usada frequentemente em ordenação e pesquisa.

    "Para a busca em um vetor ordenado, pode-se utilizar o algoritmo de busca binária, o qual não exige a implementação de uma árvore binária."
    - Sim, a busca binária não exige nenhuma implementação de árvore binária.
    - A pesquisa ou busca binária (em inglês binary search algorithm ou binary chop) é um algoritmo de busca em vetores que requer acesso aleatório aos elementos do mesmo. Ela parte do pressuposto de que o vetor está ordenado e realiza sucessivas divisões do espaço de busca (divisão e conquista) comparando o elemento buscado (chave) com o elemento no meio do vetor. Se o elemento do meio do vetor for a chave, a busca termina com sucesso. Caso contrário, se o elemento do meio vier antes do elemento buscado, então a busca continua na metade posterior do vetor. E finalmente, se o elemento do meio vier depois da chave, a busca continua na metade anterior do vetor. http://pt.wikipedia.org/wiki/Pesquisa_bin%C3%A1ria
  • "Árvore binária é uma estrutura de dados adequada à representação de hierarquia, sendo usada frequentemente em ordenação e pesquisa. Para a busca em um vetor ordenado, pode-se utilizar o algoritmo de busca binária, o qual não exige a implementação de uma árvore binária."

    Vamos por partes:

    1. "Árvore binária é uma estrutura de dados adequada à representação de hierarquia". Correto. Não apenas as árvores binárias, mas as árvores em sentido amplo representam seus elementos de forma hierárquica.

    2. "sendo usada frequentemente em ordenação e pesquisa." Correto. No que se refere à ordenação, árvores binárias podem ser usadas para auxiliar a implementação das técnicas (algoritmos) de árvore de decisão e HeapSort  (o heap pode ser representado por uma árvore binária ou por uma fila de prioridades). Já no que se refere à busca, as árvores podem ser usadas na implementação da busca binária.

    3. "Para a busca em um vetor ordenado, pode-se utilizar o algoritmo de busca binária, o qual não exige a implementação de uma árvore binária." Correto. Como eu falei no ponto anterior, pode-se usar uma árvore binária para se implementar a busca binária (situação em que aquela é chamada de árvore binária de busca). Porém a implementação da referida técnica de busca também pode ser feita através de um vetor (array), não exigindo, portanto, a árvore binária de busca.

    Bons estudos
  • Prezados,

    O comando da questão tem 2 afirmativas, vamos olhar uma a uma.

    1) Árvore binária é uma estrutura de dados adequada à representação de hierarquia, sendo usada frequentemente em ordenação e pequisa. Isso está correto, a árvore binária pode representar a hierarquia com o relacionamento dos seus nós , um nó sendo pai , filho , etc.. , além disso a árvore binária é muito usada em ordenação e pequisa, como por exemplo é usada no algoritmo heapsort.

    2) Para a busca de um vetor ordenado, pode-se utilizar o algoritmo de busca binária, o qual não exige a implementação de uma árvore binária. Isso está correto também , a busca binária não tem nada a ver com arvore binária , ela consiste em dividir a lista sempre pela metade, e testar se o valor procurado é maior ou menor que o valor procurado , e ai fazer o mesmo processo na metade da lista.

    Portanto a questão está correta.

  • RESOLUÇÃO:

    A Árvore binária é uma estrutura de dados adequada à representação de hierarquia, sendo usada frequentemente em ordenação e pesquisa. Para a busca em um vetor ordenado, pode-se utilizar o algoritmo de busca binária, o qual não exige a implementação de uma árvore binária.

    Resposta: Certo


ID
238309
Banca
CESPE / CEBRASPE
Órgão
ABIN
Ano
2010
Provas
Disciplina
Algoritmos e Estrutura de Dados
Assuntos

A respeito dos métodos de ordenação, pesquisa e hashing, julgue
os seguintes itens.

A estabilidade de um método de ordenação é importante quando o conjunto de dados já está parcialmente ordenado.

Alternativas
Comentários
  • A estabilidade de um método de ordenação é importante quando você quer preservar a associação entre chaves e valores em uma estrutura de dados.

     

    Exemplo, temos o vetor:

    [0] -> 666

    [1] -> 7

    [2] -> 14

     

    Por ordenação instável:

    [0] -> 7

    [1] ->14

    [2] -> 666

     

    Por ordenação estável:

    [1] -> 7

    [2] ->14

    [0] -> 666

     

    Por exemplo, em PHP usa-se sort ( $array ) para ordenação instável, e asort ($array) para ordenação estável.

     

    Algoritmos Estáveis incluem Bubblesort, Mergesort e Insertsort.

    Algoritmos Instáveis incluem o Quicksort, Heapsort, Selectionsort e Shellsort

     

  • Discordo do gabarito.
    Um método de ordenação é dito estável se ele preserva a ordem relativa dos itens com chaves duplicadas/iguais.

    Assim, se temos um conjunto de dados parcialmente ordenado como [1, 1, 2, 4, 4, 3, 5, 5, 5], o numero de trocas realizadas por um método instável deve ser maior. Então podemos concluir que o fato de um método ser estável é relavante quando o conjunto está parcialmente ordenado.

    Gostaria que alguém comentasse a respeito.
  • Concordo com o gabarito. O fato do algoritmo ser estável ou não é irrelevante para melhorar sua performance na ordenação de um conjunto de dados já parcialmente ordenado. Como o colega expos, um algorimo é estável se ele preserva a ordem relativa dos itens comchaves duplicadas/iguais. Veja que o fato do algoritmo não preservar a ordem dos itens com chaves duplicadas/iguais não afetará a performance da ordenação. Um exemplo: nas três primeiras posições temos [1,1,1,...]. Ora, não importa (para uma ordenação) se o 1 que está na primeira posição se manterá lá. Na primeira posição pode estar o segundo ou o terceiro 1, desde que seja um 1. 

    []'s, espero ter ajudado!
  • Prezados,

    Um método de ordenação se diz estável se preserva a ordem de registros de chaves iguais, ou seja, os registros aparecem na sequência ordenada na mesma ordem que estão na sequência inicial. Isso só é importante quando há dados associados as chaves de ordenação, sendo indiferente se o conjunto de dados já está parcialmente ordenado ou não.

    Portanto a questão está errada.


  • 2011

    Os métodos de ordenação podem ser classificados como estáveis ou não estáveis. O método é estável se preserva a ordem relativa de dois valores idênticos. Alguns métodos eficientes como shellsort ou quicksort não são estáveis, enquanto alguns métodos pouco eficientes, como o método da bolha, são estáveis.

    Certa

     

     

    O Bubble é o pior algoritmo (menos eficiente) e é estável

     


ID
249403
Banca
CESPE / CEBRASPE
Órgão
DETRAN-ES
Ano
2010
Provas
Disciplina
Algoritmos e Estrutura de Dados
Assuntos

Com relação à programação, algoritmos e estrutura de dados, julgue
os itens seguintes.

O método de recursividade deve ser utilizado para avaliar uma expressão aritmética na qual um procedimento pode chamar a si mesmo, ou seja, a recursividade consiste em um método que, para que possa ser aplicado a uma estrutura, aplica a si mesmo para as subestruturas componentes.

Alternativas
Comentários
  • A recursão é o processo pelo qual passa um certo procedimento quando um dos passos do procedimento em questão envolve a repetição completa deste mesmo procedimento. Um procedimento que se utiliza da recursão é dito recursivo. Também é dito recursivo qualquer objeto que seja resultado de um procedimento recursivo.

ID
249409
Banca
CESPE / CEBRASPE
Órgão
DETRAN-ES
Ano
2010
Provas
Disciplina
Algoritmos e Estrutura de Dados
Assuntos

Com relação à programação, algoritmos e estrutura de dados, julgue
os itens seguintes.

Na implementação de um deque sequencial, é necessário ter, em cada extremidade, uma variável de ponteiro externa, por meio da qual as inserções e retiradas sejam efetuadas.

Alternativas
Comentários
  • um deque é uma estrutura de dados chamada de “Double-Ended QUEue” é uma estrutura de dados parecida com uma fila, mas os elementos podem ser inseridos e removidos das duas extremidades.
    Logo necessitamos de no mímino dois ponteiros, um para o início do deque e outro para o final.
  • DEQUE

     É uma estrutura de dados similar a uma fila, no entanto, suporta inserção e remoção em ambas extremidades da estrutura.
     Essa estrutura usa duas variáveis de controle, uma para referenciar o inicio e outra para referenciar o fim da estrutura.


ID
249412
Banca
CESPE / CEBRASPE
Órgão
DETRAN-ES
Ano
2010
Provas
Disciplina
Algoritmos e Estrutura de Dados
Assuntos

Com relação à programação, algoritmos e estrutura de dados, julgue
os itens seguintes.

Um tipo abstrato de dados apresenta uma parte destinada à implementação e outra à especificação. Na primeira, são descritas, em forma sintática e semântica, as operações que podem ser realizadas; na segunda, os objetos e as operações são representados por meio de representação, operação e inicialização.

Alternativas
Comentários
  • "Um tipo abstrato de dados apresenta uma parte destinada à implementação e outra à especificação"

    - Pode realmente conter essas duas partes. Em java por exemplo existem dois tipos para tipos abstratos, a interface e a classe abstrata

    "Na primeira, são descritas, em forma sintática e semântica, as operações que podem ser realizadas;"

    - Correto, pois a implementação é exatamente isso.

    "na segunda, os objetos e as operações são representados por meio de representação, operação e inicialização"

    - Errado, os objetos e operações devem ser representados por meio de representação, mas não há nenhum tipo de implementação, portanto não há de se falar em inicialização.
  • "Um tipo abstrato de dados apresenta uma parte destinada à implementação e outra à especificação."

    CERTO

    "Na primeira, são descritas, em forma sintática e semântica, as operações que podem ser realizadas;"

    ERRADO, isso seria na especificação.

    "na segunda, os objetos e as operações são representados por meio de representação, operação e inicialização."

    ERRADO, isso seria na implementação.

    CESPE invertendo mais uma vez.
  • Que livro ou artigo posso ler sobre isso ?

  • A CESPE apenas inverteu as definições. Na especificação fica a "assinatura" de métodos e propriedades públicas, isto é, aquilo que pode ser executado ou invocado daquele código por quem fará "uso" dele. 


ID
252091
Banca
CESPE / CEBRASPE
Órgão
STM
Ano
2011
Provas
Disciplina
Algoritmos e Estrutura de Dados
Assuntos

Com relação a algoritmos e lógica de programação, julgue os
itens a seguir.

Procedimento ou sub-rotina é um conjunto de instruções que realiza determinada tarefa. As funções são criadas da mesma maneira que os procedimentos; a diferença é que as funções podem ser utilizadas em expressões, como se fossem variáveis, pois elas retornam valores associados ao seu nome.

Alternativas
Comentários
  • Olá, pessoal!
     
    O gabarito foi atualizado para "E", após recursos, conforme edital publicado pela banca, e postado no site.

    Justificativa da banca: 
    As funções podem não ser criadas da mesma maneira que os procedimentos. Portanto, opta-se pela alteração do gabarito.
     
    Bons estudos!
  • Em que situações é possível ter uma diferença do modo como é criada a função do procedimento?

    A questão foi tirada desse site:
    https://juliobattisti.com.br/artigos/livrologica/capitulo1/08.asp

    Assim fica difícil acreditar na licitude do processo da CESPE.


     

  • Depois de pensar um pouco vi que o Julio Batist está errado mesmo. Não podemos dizer que uma função é criada da mesma maneira que um procedimento porque: a começar da declaração da função que tem retorno e do procedimento que NUNCA retorna nada. Logo, eles são diferentes.


ID
252097
Banca
CESPE / CEBRASPE
Órgão
STM
Ano
2011
Provas
Disciplina
Algoritmos e Estrutura de Dados
Assuntos

Com relação a algoritmos e lógica de programação, julgue os
itens a seguir.

Nas estruturas de controle, tais como as estruturas de seleção simples, compostas ou encadeadas, é necessário verificar as condições para a realização de uma instrução ou sequência de instruções.

Alternativas
Comentários
  • estruturas de seleção simples: IF

    compostas: IF/ELSE

    encadeadas: CASE

    é necessário verificar as condições para a realização de uma instrução ou sequência de instruções
  • Um if dentro do outro não seria uma instrução encadeada?
  • correto -

    simples estruturas condicional - if then endif

    composta if-then-else

    encadeada - if-then-else-if-then-else... endif

  • Isso aí. A verificação das condições ocorre no comando if.

    Resposta: Certo

  • Correta. A verificação das condições ocorre no comando if.

  • Correto, pois para que o algoritmo realiza uma seleção, é necessário que ele verifique uma condição.

    Resposta: Certo

  • A verificação das condições ocorre no comando if.

  • Estruturas de repetição:

    Estruturas de repetição com verificação antecipada - WHILE

    Estruturas de repetição com verificação no final – REPEAT UNTIL

    Estruturas de repetição com variável de controle - FOR


ID
255853
Banca
FCC
Órgão
TRT - 24ª REGIÃO (MS)
Ano
2011
Provas
Disciplina
Algoritmos e Estrutura de Dados
Assuntos

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

Alternativas
Comentários
  • A técnica é a recursão, através da recursividade poderemos repetir um trecho de código com a chamada para si mesmo.
  • Resposta E

    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.

     
  • Não concordo com o gabarito dessa questão, se 0 é um número natural ( N ), o sucessor desse número natural é N + 1 , ou seja, 1,2,3,4......... , sabendo-se disso, a alternativa correta é a letra "D", pois a cada interação ( N + 1 ) eu tenho um novo número natural. Mas como existe também a alternativa "E", essa questão é passível de anulação, pois uma interação ( N + 1 ) de um numero natural também pode ser feito recursivamente.

    Questão mal formulada.
  • Colega Edluise Costa....

    Acredito que você tenha confundido ITERAÇÃO com INTERAÇÃO.
  •  e)recursão.

    Recursao ocorre quando uma função invoca ela propria. e.g:

    long factorial (long a){

    if (a>1){

    return a * (factorial (a-1));

    }else

    return 1;

    }

    Na 1° iteração (considerando que a !=1), a função vai retornar 'a' vezes todo a função inteira, a qual tambem contém 'a'. Dentro da função factorial(a), há outra chamada para factorial(a) (porque o objectivo é return a * (factorial(a-1)), e nao a* a-1). A função factorial (a) tem outra função factorial (a) dentro de si mesma, o que faz necessario um decremento (a-1). Quando derementar até a == 1, as iterações cessam.


ID
273337
Banca
CESPE / CEBRASPE
Órgão
FUB
Ano
2011
Provas
Disciplina
Algoritmos e Estrutura de Dados
Assuntos

A respeito dos princípios de programação, julgue os seguintes itens.

Os métodos de ordenação podem ser classificados como estáveis ou não estáveis. O método é estável se preserva a ordem relativa de dois valores idênticos. Alguns métodos eficientes como shellsort ou quicksort não são estáveis, enquanto alguns métodos pouco eficientes, como o método da bolha, são estáveis.

Alternativas
Comentários
  • Leia: http://pt.wikipedia.org/wiki/Ordena%C3%A7%C3%A3o_est%C3%A1vel
  • Um algoritmo de ordenação é estável se preserva a ordem de registros de chaves iguais. Ou seja, se tais registros aparecem na sequencia ordenada (resultado da ordenação) na mesma ordem em que estão na sequencia inicial (entrada desordenada).

    Alguns algoritmos estáveis:
    • Bubble
    • Cocktail
    • Insertion
    • Merge
    • Bucket
    • Counting

    Alguns algoritmos instáveis:
    • Selection
    • Quick
    • Heap
    • Shell
  • Decoreba:

     

    - Métodos Estáveis: Bubble, Insertion e Merge; -BIM - "O que for diferente desses são os instáveis"

    - Instáveis: Selection, Quick, Heap e Shell. 

  • Gabarito Certo

    algoritmos estáveis - MIB, homens de preto - merge, insert e bubble sort

    algoritmos instáveis - SSH Q, segurança - select, shell, heap e quick sort

     

     

     

    "Retroceder Nunca Render-se Jamais !"
    Força e Fé !
    Fortuna Audaces Sequitur !

  • Um algoritmo de ordenação é estável (= stable) se não altera a posição relativa dos elementos que têm o mesmo valor. Digamos, por exemplo, que um vetor de números do tipo double é ordenado com base na parte inteira dos números, ignorando a parte fracionária. Se o algoritmo de ordenação for estável, os números que têm a mesma parte inteira continuarão na mesma ordem em que estavam originalmente. Na seguinte figura, a primeira linha mostra o vetor original e a segunda, o vetor ordenado:


    44.0 55.1 55.2 66.0 22.9 11.022.5 33.0

    11.0 22.9 22.5 33.0 44.0 55.1 55.2 66.0 Observe que 22.9 e 22.5 permaneceram na mesma ordem que estavam antes da ordenação, o mesmo para 55.1 e 55.2


    Eis outro exemplo. Digamos que cada elemento do vetor é um struct com dois campos: o primeiro contém o nome de uma pessoa e o segundo contém o ano de nascimento da pessoa. Suponha que o vetor original tem dois João da Silva, primeiro o que nasceu em 1990 e depois o que nasceu em 1995. Se o vetor for ordenado por um algoritmo estável com base no primeiro campo, os dois João da Silva continuarão na mesma ordem relativa: primeiro o de 1990 e depois o de 1995.


ID
276703
Banca
ESAF
Órgão
CVM
Ano
2010
Provas
Disciplina
Algoritmos e Estrutura de Dados
Assuntos

Assinale a opção correta.

Alternativas
Comentários
  • inferência bayesiana é um tipo de inferência estatística que descreve as incertezas sobre quantidades invisíveis de forma probabilística. Incertezas são modificadas periodicamente após observações de novos dados ou resultados. A operação que calibra a medida das incertezas é conhecida como operação bayesiana.
  • a) errada por que os operadores são AND, OR e NOT

    b) as buscas conceituais apresentam como resultados palavras que lembram o tema pesquisado, ao pesquisar "viola" traria no resultado também "violão", por exemplo. Então os resultados mais relevantes não conteriam necessariamente as palavras chaves escolhidas.

    c) Pegadinha com inferência bayesiana

    e) Pegadinha com busca booleana

    d - correto

ID
278155
Banca
CESPE / CEBRASPE
Órgão
TRT - 21ª Região (RN)
Ano
2010
Provas
Disciplina
Algoritmos e Estrutura de Dados
Assuntos

Julgue os itens seguintes, referentes às estruturas de dados.

O tipo abstrato de dados consiste em um modelo matemático (v,o), em que v é um conjunto de valores e o é um conjunto de operações que podem ser realizadas sobre valores.

Alternativas
Comentários
  • Em computação, o Tipo Abstrato de Dado (TAD) é uma especificação de um conjunto de dados e operações que podem ser executadas sobre esses dados

    Fonte: http://pt.wikipedia.org/wiki/Tipo_Abstrato_de_Dado
  • CORRETO!!!! ---> É exatamente isso, o "V" representa os DADOS abstratos e o "O" representa as OPERAÇÕES.

     

    ---------------------------------------------------------------------------------------------------

    TAD – Tipo Abstrato de Dados
     A abstração enfatiza apenas as características essenciais de um objeto, levando em consideração um cenário específico. O conjunto de características resultante da abstração é materializado na forma de um TAD – Tipo Abstrato de Dados.
     Um tipo abstrato de dados agrupa a estrutura de dados juntamente com as operações que podem ser feitas sobre esses dados.

     

    Fonte: Itnerante

    ​---------------------------------------------------------------------------------------------------


ID
280888
Banca
INSTITUTO CIDADES
Órgão
AGECOM
Ano
2010
Provas
Disciplina
Algoritmos e Estrutura de Dados
Assuntos

Os algoritmos podem ser representados de várias formas: Diagrama de Nassi-Shneiderman, Fluxograma e Português Estruturado. Com relação às formas de representação de algoritmos, analise as seguintes afirmativas:

I. Os Diagramas Nassi-Shneiderman, também conhecidos como Diagramas de Chapin, surgiram nos anos 70 como uma maneira de ajudar nos esforços da abordagem de programação estruturada.
II. Os Fluxogramas ou Diagramas de Fluxo, são uma representação gráfica que utilizam formas geométricas padronizadas ligadas por setas de fluxo, para indicar as diversas ações (instruções) e decisões que devem ser seguidas para resolver um problema.
III. O Português Estruturado, é uma forma especial de linguagem bem mais restrita que a Língua Portuguesa e com significados bem definidos para alguns termos utilizados nas instruções (comandos).

Podemos afirmar corretamente que:

Alternativas
Comentários
  • O português estruturado é, na verdade, uma simplificação extrema do Português, limitada a umas poucas palavras e estruturas que têm um significado muito bem definido.

    Sintaxe da linguagem é o conjunto de palavras e regras que definem o formato das sentenças válidas.

    Fonte: http://cra-ma.org.br/ead/phocadownload/Apostila%20de%20Portugues%20Estruturado.pdf


ID
280918
Banca
INSTITUTO CIDADES
Órgão
AGECOM
Ano
2010
Provas
Disciplina
Algoritmos e Estrutura de Dados
Assuntos

Quando se pretende escrever um programa numa determinada linguagem de programação, a de que o computador possa executar um conjunto de passos e fornecer os resultados pretendidos, podemos elaborar um pseudocódigo de modo a facilitar a compreensão e escrita do programa. Com relação a pseudocódigo, analise as seguintes afirmativas:

I. Os pseudocódigos são constituídos usualmente pelo vocabulário de uma linguagem corrente, por exemplo, o português, e pela sintaxe global de uma outra, como por exemplo, a linguagem de Programação Estruturada.

II. A Iteração permite que partes de um programa sejam repetidas um número finito de vezes, segundo uma condição de controle.
III. Para indicar a operação de atribuição, utiliza-se o símbolo  

Podemos afirmar corretamente que: " "

Alternativas

ID
280921
Banca
INSTITUTO CIDADES
Órgão
AGECOM
Ano
2010
Provas
Disciplina
Algoritmos e Estrutura de Dados
Assuntos

Assinale a alternativa que contém o significado correto do símbolo de Algoritmos:

Alternativas

ID
280948
Banca
INSTITUTO CIDADES
Órgão
AGECOM
Ano
2010
Provas
Disciplina
Algoritmos e Estrutura de Dados
Assuntos

Variáveis e constantes são os elementos básicos que um programa manipula. Uma variável é um espaço reservado na memória do computador para armazenar um tipo de dado determinado. Com relação a variáveis e constantes, marque a alternativa correta:

Alternativas

ID
280954
Banca
INSTITUTO CIDADES
Órgão
AGECOM
Ano
2010
Provas
Disciplina
Algoritmos e Estrutura de Dados
Assuntos

A lógica de programação é necessária para o desenvolvimento de sistemas e programas. Ela permite definir a seqüência lógica para o desenvolvimento. Com relação à lógica de programação, marque a alternativa correta.

Alternativas