SóProvas



Questões de Conceitos Básicos e Algoritmos


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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
283690
Banca
FUNIVERSA
Órgão
IPHAN
Ano
2009
Provas
Disciplina
Algoritmos e Estrutura de Dados
Assuntos

Três estruturas lógicas podem compor um algoritmo: (1) Estrutura sequencial, (2) Estrutura de seleção e (3) Estrutura de repetição. Assinale em qual dos trechos de algoritmo essas três estruturas estão presentes, simultaneamente.

Alternativas
Comentários
  • Tipos de estruturas lógicas:

    Estrutura de sequência. Normalmente, instruções em um programa são executadas uma após a outra na ordem em que são escritas. Esse processo é chamado de execução sequencial. Para alterar esse fluxo de execução sequência o programa utiliza os elementos seleção e repetição;
     
    Estrutura de continuação (ou sequencia): pode ser uma estrutura em que o código é executado sequencialmente, de cima para baixo. As linguagens procedurais por padrão seguem a estrutura sequencial, o que não acontece com as linguagens do paradigma lógico (Prolog, por exemplo). Pode ser também uma estrutura que defina um salto incondicional para uma determinada instrução do código (um jump, por exemplo);
     
    Estrutura de seleção. Os programas utilizam instruções de seleção para escolher os fluxos de execução de acordo com condições definidas na estrutura de seleção. As estruturas de seleção podem ser de dois tipos: simples e compostas. As estrutura ssimples apenas selecionam se um determinado trecho de instruções será executado ou não. Já as estruturas composta de seleção, interligam várias estruturas simples formando uma estrutura mais complexa, esta forma de organização da estrutura de seleção composta é chamada de aninhamento;
     
    Estrutura de seleção: baseada em uma condição, essa estrutura diz se um bloco de código será executado ou não. Dois exemplos desse tipo de estrutura são:
    (1) estrutura se-então(-senão) (if-then-else na linguagem C, por exemplo) e ;
    (2) estrutura de seleção de múltipla escolha (switch-case na linguagem C, por exemplo);
     
    Estrutura de repetição. Programas de computador em muitos casos precisão executar uma determinada instrução ou mesmo um determinado conjunto de instruções repetidas vez, para isso, utilizam a estrutura de repetição. A quantidade de vezes que as instruções são repetidas é determinada pela estrutura de repetição.
     
    Estrutura de repetição: enquanto uma condição for satisfeita, um bloco de código será executado. Três exemplos práticos e válidos em diversas linguagens são: while-do, do-while e o for.

    Portanto a letra A) tem estrutura sequencial, Seleção (se ... então ... senão) e Repetição (enquanto ...)

    Fonte: HBTI Algoritmos.

ID
327124
Banca
FUNCAB
Órgão
IDAF-ES
Ano
2010
Provas
Disciplina
Algoritmos e Estrutura de Dados
Assuntos

Segundo Tanenbaum, existe um princípio que diz que “todos os algoritmos devem ser públicos, apenas chaves são secretas.” Este princípio é conhecido como princípio de:

Alternativas
Comentários
  • b-

    o principio de kerchoff afirma que encriptação para a confidencialidade da chave se baseia na segurança da chave - security through obscurity


ID
339514
Banca
COSEAC
Órgão
DATAPREV
Ano
2009
Provas
Disciplina
Algoritmos e Estrutura de Dados
Assuntos

01  class Prova{
02  public int a;
03
04  Prova(int _a){
05  a = _a;
06  }
07  public void acrescenta(int n){
08  a += n;
09  }
10  public void acrescenta(){
11  a++;
12  }
13  }
14  class SubProva extends Prova{
15  private int b;
16  SubProva(int umb, int uma){
17  super(uma);
18  b = umb;
19  }
20  public void acrescenta(int n){
21  b=b+n+2;
22  }
23  public static void main (String args[ ]) {
24  SubProva s = new SubProva(2,5);
25  Prova p = new Prova(2);
26  s.acrescenta(3);
27  p.acrescenta();
28  System.out.println(s.b+s.a);
29  System.out.println(p.a);
30  s.acrescenta();
31  System.out.println(" "+s.b+p.a+s.a) ;
32  }
33 }

Comrelação ao programa anterior, é correto afirmar que:

Alternativas
Comentários
  • Essa questão está errada,não? b é um atributo privado. Não poderia ser acessado por s.b.

  • Não, poderia ser acessado por s.b porque o método main que acessa a variável privada s.b está dentro da própria classe SubProva, então é o próprio método (main) da subclasse SubProva que acessa a variável s.b, e isso pode.


ID
339517
Banca
COSEAC
Órgão
DATAPREV
Ano
2009
Provas
Disciplina
Algoritmos e Estrutura de Dados
Assuntos

01  class Prova{
02  public int a;
03
04  Prova(int _a){
05  a = _a;
06  }
07  public void acrescenta(int n){
08  a += n;
09  }
10  public void acrescenta(){
11  a++;
12  }
13  }
14  class SubProva extends Prova{
15  private int b;
16  SubProva(int umb, int uma){
17  super(uma);
18  b = umb;
19  }
20  public void acrescenta(int n){
21  b=b+n+2;
22  }
23  public static void main (String args[ ]) {
24  SubProva s = new SubProva(2,5);
25  Prova p = new Prova(2);
26  s.acrescenta(3);
27  p.acrescenta();
28  System.out.println(s.b+s.a);
29  System.out.println(p.a);
30  s.acrescenta();
31  System.out.println(" "+s.b+p.a+s.a) ;
32  }
33 }

Comr elação ao programa anterior, é correto afirmar que a linha 29, ao executar o programa, a saída será:

Alternativas

ID
339520
Banca
COSEAC
Órgão
DATAPREV
Ano
2009
Provas
Disciplina
Algoritmos e Estrutura de Dados
Assuntos

01  class Prova{
02  public int a;
03
04  Prova(int _a){
05  a = _a;
06  }
07  public void acrescenta(int n){
08  a += n;
09  }
10  public void acrescenta(){
11  a++;
12  }
13  }
14  class SubProva extends Prova{
15  private int b;
16  SubProva(int umb, int uma){
17  super(uma);
18  b = umb;
19  }
20  public void acrescenta(int n){
21  b=b+n+2;
22  }
23  public static void main (String args[ ]) {
24  SubProva s = new SubProva(2,5);
25  Prova p = new Prova(2);
26  s.acrescenta(3);
27  p.acrescenta();
28  System.out.println(s.b+s.a);
29  System.out.println(p.a);
30  s.acrescenta();
31  System.out.println(" "+s.b+p.a+s.a) ;
32  }
33 }

Com relação ao programa anterior, é correto afirmar que:

Alternativas
Comentários
  • Essa questão é uma leve pegadinha, pois se fosse somente s.b+p.a+s.a, seria 16. Mas como possui o " "+s.b+p.a+s.a, acaba concatenando então se torna 736.

  • Galera, rodem o código em algum compilador online, por que não é a e)? o b é privado, dá erro na linha 28!

    public class Prova{

    public int a;

    Prova(int _a){

     a = _a;

     }

     public void acrescenta(int n){

     a += n;

     }

     public void acrescenta(){

     a++;

     }

     }

     class SubProva extends Main{

     private int b;

     SubProva(int umb, int uma){

     super(uma);

     b = umb;

     }

     public void acrescenta(int n){

     b=b+n+2;

     }

     public static void main(String[] args) {

     SubProva s = new SubProva(2,5);

     Prova p = new Prova(2);

     s.acrescenta(3);

     p.acrescenta();

     System.out.println(s.b+s.a);

     System.out.println(p.a);

     s.acrescenta();

     System.out.println(" "+s.b+p.a+s.a) ;

     }

     }


ID
339523
Banca
COSEAC
Órgão
DATAPREV
Ano
2009
Provas
Disciplina
Algoritmos e Estrutura de Dados
Assuntos

Ao executar o trecho de programa a seguir, o valor de X no final do trecho será:

.
.
.
x=3;
x--;
if(x < 3)
x--;
else
x++;
x+=2;
.
.
.

Alternativas

ID
339526
Banca
COSEAC
Órgão
DATAPREV
Ano
2009
Provas
Disciplina
Algoritmos e Estrutura de Dados
Assuntos

Ao executar o trecho de programa a seguir, valor de x no final do trecho será:

.
.
.
x=1;
for(i=0;i < 5; i++)
x+= i;
for(i=4;i > 1; i--)
x -= i;
.
.
.

Alternativas

ID
347056
Banca
MOVENS
Órgão
IMEP-PA
Ano
2010
Provas
Disciplina
Algoritmos e Estrutura de Dados
Assuntos

Considerando a passagem de informações para funções, julgue os itens abaixo e, em seguida, assinale a opção correta.

I – O mecanismo usado para transmitir informações para uma função é denominado argumento.

II – Todos os parâmetros em uma função devem ser do mesmo tipo.

III – Quando a informação é passada por valor, a função chamada não pode alterar o valor de uma variável da função que chama.

IV – A utilização de ponteiros como parâmetros irá causar erro de sintaxe no momento da compilação.

A quantidade de itens certos é igual a

Alternativas
Comentários
  • I – CORRETO

    II - ERRADO. Em linguagens de programação que utilizam explicitamente tipos de dados fortes, cada tipo de parâmetro é especificado na declaração da sub-rotina. As linguagens que utilizam inferência de tipos tentam descobrir automaticamente o tipo do parâmetro no corpo da função, enquanto as linguagens que utilizam tipos fracos descobrem o tipo do parâmetro em tempo de execução. Algumas linguagens utilizam palavras reservadas especiais (void, por exemplo) para indicar que uma sub-rotina não possui parâmetros; na teoria dos tipos, estas funções levam uma lista vazia de parâmetros (cujo tipo não é void, mas unit).

    III - CORRETO. Usando a chamada por valor, as funções não podem modificar o valor de uma variável passada para uma função.

    IV - ERRADO. A utilização de ponteiros como parâmetros não irá causar erro de sintaxe no momento da compilação.


ID
359764
Banca
CETAP
Órgão
DETRAN-RR
Ano
2010
Provas
Disciplina
Algoritmos e Estrutura de Dados
Assuntos

Dentre os paradigmas para construção de algoritmos, o método Divisão-e-Conquista, caracteriza-se por:

Alternativas

ID
449908
Banca
FGV
Órgão
MEC
Ano
2009
Provas
Disciplina
Algoritmos e Estrutura de Dados
Assuntos

Observe o trecho de código abaixo.
atribuir 13 a INDICE;
atribuir 0 a SOMA;
atribuir 0 a K;

enquanto K < INDICE faça
início
somar 1 a K;
atribuir SOMA+K a SOMA;
imprimir(K);
fim;
fim-enquanto;
imprimir(SOMA);

Ao final do processamento, a variável SOMA terá o seguinte valor:

Alternativas
Comentários
  • índice = 13
    soma = 0 
    k = 0

    Será adiciona 1 a k até k = 13, e adicionado a soma = soma + k, então
    k = 1
    soma = 1
    k = 2
    soma = 3
    k = 3
    soma = 6
    k = 4
    soma = 10
    k = 5
    soma = 15
    k = 6
    soma = 21
    k = 7 
    soma = 28
    k = 8
    soma = 36
    k = 9
    soma = 45
    k = 10
    soma = 55
    k = 11
    soma = 66
    k = 12
    soma = 78
    k = 13
    soma = 91
  • LAÇO ENQUANTO SOMA ANTES K SOMA + K
    1 0 1 1
    2 1 2 3
    3 3 3 6
    4 6 4 10
    5 10 5 15
    6 15 6 21
    7 21 7 28
    8 28 8 36
    9 36 9 45
    10 45 10 55
    11 55 11 66
    12 66 12 78
    13 78 13 91
  • Soma da PA finita. 
    (a1 + an) *n / 2
    (1+13)*13 / 2
    14*13 / 2
    182 / 2
    91
  • Discordo do gabarito da banca.

    Pois, verificando-se a condição, que não pede  K = INDICE, mas pede K < INDICE,  então na transição do 12º LOOP para o 13º, a variável K já terá valor de 13, somente sendo feita a comparação na condição inicial e como esta já foi atendida, não entrará na estrutura, portanto resultado da variável SOMA = 78

    1º loop: somar 1 a K = 1+0 = K = 1 ---> atribuir SOMA+K=0+1= SOMA = 1

    2º loop: somar 1 a K = 1+1 = K = 2 ---> atribuir SOMA+K=1+2= SOMA = 3

    3º loop: somar 1 a K = 1+2 = K = 3 ---> atribuir SOMA+K=3+3= SOMA = 6

    4º loop: somar 1 a K = 1+3 = K = 4 ---> atribuir SOMA+K=6+4= SOMA = 10

    5º loop: somar 1 a K = 1+4 = K = 5 ---> atribuir SOMA+K=10+5= SOMA = 15

    6º loop: somar 1 a K = 1+5 = K = 6 ---> atribuir SOMA+K=15+6= SOMA = 21

    7º loop: somar 1 a K = 1+6 = K = 7 ---> atribuir SOMA+K=21+7= SOMA = 28

    8º loop: somar 1 a K = 1+7 = K = 8 ---> atribuir SOMA+K=28+8= SOMA = 36

    9º loop: somar 1 a K = 1+8 = K = 9 ---> atribuir SOMA+K=36+9= SOMA = 45

    10º loop: somar 1 a K = 1+9 = K = 10 ---> atribuir SOMA+K=45+10= SOMA = 55

    11º loop: somar 1 a K = 1+10 = K = 11 ---> atribuir SOMA+K=55+11= SOMA = 66

    12º loop: somar 1 a K = 1+11 = K = 12 ---> atribuir SOMA+K=66 +12= SOMA = 78

    13º loop: somar 1 a K = 1+12 = K = 13 (não ocorre no entrada na estrutura, condição atendida, enquanto K < INDICE, então, 13 < 13)

    K = 13

    SOMA = 78

  • Ado Silva, a sua lógica está correta! contudo o erro foi você iniciar o k =1. Se fosse k=1 você estária certo. (mas o K=0).


ID
449911
Banca
FGV
Órgão
MEC
Ano
2009
Provas
Disciplina
Algoritmos e Estrutura de Dados
Assuntos

Observe o trecho de código abaixo.
algoritmo ALG;
variáveis
X: lógico;
Y: string;
início
Y:=´MEC´;X:=FALSO;
repetir
imprimir(Y);
X:=NÃO X;
até que (NÃO X);
fim.

Após a execução, a quantidade de vezes que a variável Y será impressa é igual a:

Alternativas
Comentários
  • A primeira vez que o algoritmo chega ao loop repetir, é impresso "MEC" e x recebe o valor de "não x" que é TRUE (! FALSE = TRUE).
    Como a instrução de repetição do loop é até que (Não X) o loop repete (até que (não X) equivale há até que (x == TRUE), ou seja para quando X for TRUE).
    A segunda vez que o algoritmo entra no loop é impresso a segunda vez "MEC" e X recebe o valor TRUE.
    Finalmente o algortimo termina.
  • Não entendi Bernardo. Se a primeira vez que X passa no loop ele recebe TRUE, então deveria já sair do Loop não? Já que x:Não X => x==TRUE. Ou seja Y seria impresso somente uma vez. Estou certo?
  • É isso mesmo Diguinho. Você deduziu corretamente parte da questão. A primeira vez que o loop é executado X assume valor TRUE. O problema é que a condicional de Parada é (NÃO X) ou seja, para que esta expressão seja validade (=TRUE), X deve ser FALSE. Por isso o Loop é executado novamente, X passa a ser FALSE e quando chega na condição de parada, (NÃO X) -> (NÃO FALSE) -> TRUE!
  • Pessoal o Y SÓ VAI SER IMPRESSO UMA VEZ, o próprio X está sendo utilizado como teste lógico e ele está sendo alterado dentro da estrutura de repetição:

    Ao entrar na estrutura de repetição X = NÃO X, ou seja X = TRUE o While vai ser NÃO X, ou seja enquanto (NÃO X = FALSE)

    repetir 
        imprimir("MEC")
        X = TRUE
    até que (FALSE)

    Quem quiser testar em C#:

    bool X = false;
    string Y = "MEC";
    do
    {
          System.Console.Out.Write(Y);
           X = !X;
    } while (!X);

    Vai ver que Y só será impresso uma vez.
     
  • repetir
      imprimir(Y);
      X:=NÃO X;
    até que (NÃO X);


    O Laço é sempre executado ao menos uma vez e é finalizado apenas quando a condição "(NÃO X)" for verdadeira.

    Nessa questão, X começa como "Falso", na primeira interação o valor de X é modificado para "Verdadeiro", porém o que deve ser verdadeiro para sair é "(NÃO X)". Dessa forma será realizada uma segunda interação, e ao fim do laço, agora com o valor de X igual a "Falso" o laço é finalizado.
  • Acho que o problema desta questão é a falta de padrão do portugol(Português estruturado). Assim fica mais fácil de entender.

    algoritmo "ALG"

    var
       x: logico
       y: caractere
    inicio
       y<-"MEC"
       x<-falso
       repita
             escreva(y)
             x<-nao X
       ate (nao X)
    fimalgoritmo


ID
449914
Banca
FGV
Órgão
MEC
Ano
2009
Provas
Disciplina
Algoritmos e Estrutura de Dados
Assuntos

Em relação às técnicas de programação e construção de algoritmos, assinale a alternativa que apresente corretamente duas características da estrutura de controle repetir ... até que.

Alternativas
Comentários
  • a) O teste de controle é realizado no fim da estrutura / a saída da estrutura de repetição ocorre quando o resultado do teste é verdadeira  falso.

    b) As instruções no loop são executadas pelo menos uma vez / a saída da estrutura de repetição ocorre quando o resultado do teste é verdadeiro falso.

    c) O teste de controle é realizado no início fim da estrutura / a saída da estrutura de repetição ocorre quando o resultado do teste é verdadeiro.

    e) A execução permanece no loop enquanto o resultado do teste for falso verdadeiro / a saída da estrutura de repetição ocorre quando o resultado do teste é verdadeiro  falso.
  • repetir                   // Início do bloco de repetição
      se (N for impar) então imprimir (N);
      atribuir N - 3 a N;

    até que N < 3;     // Teste de saída. Caso a condição seja verdadeira sai do laço de repetição

    A questão ficaria mais simples se fosse apresentado o trecho do código acima, como ocorreu em outra questão da mesma prova.

    Repetir ... até que (condição), ou 
    Repeat ... Until (condição)

    Para esse caso, o teste da condição somente é efetuado no final do bloco de repetição, ou seja, o laço é percorrido ao menos uma vez.

    Outra estrutura muito utilizada é:

    Faça enquanto (condição) ... Fim-Enquanto, ou 
    Do While (condição) ... Loop ou ainda
    While (condição) Do ... Loop

    Faça enquanto N < 3   // Início do bloco de repetição. Teste da condição no início do bloco.
      se (N for impar) então imprimir (N);
      atribuir N - 3 a N;

    Fim enquanto;                          // Retorna para o início do bloco de repetição

    Já nesse segundo caso, a condição é verificada já na entrada do laço. Dessa forma, caso a condição não seja atendida o laço não é percorrido.

    Uma terceira estrutura é:

    Para valor inicial, valor final ... Próximo
    For valor inicial, valor final ... Next

    Para N = 1 até 3            // Início do bloco de repetição. Teste da condição no início do bloco.
      se (N for impar) então imprimir (N);
      atribuir N - 3 a N;

    Próximo;                         // Realiza o autoincremento e retorna para o início do bloco de repetição.

    Para essa situação, quando o valor de N ultrapassar o valor 3 o laço de repetição é finalizado.

    Existem ainda outras estruturas de repetição, porém as acima são as mais utilizadas.

  • d)A execução permanece no loop enquanto o resultado do teste for falso / a saída da estrutura de repetição ocorre quando o resultado do teste é verdadeiro.

    O repeat- untilé quando o n de vezes do algoritmo repeat é desconhecido, mas tambem pode ser usado se for conhecido. O teste é depois do bloco de execução, o qual perduraenquanto for falso

  • A resposta D está errada, o correto é E falso.


ID
449923
Banca
FGV
Órgão
MEC
Ano
2009
Provas
Disciplina
Algoritmos e Estrutura de Dados
Assuntos

Observe o pseudocódigo abaixo, que utiliza a estrutura de controle repetir ... até que ... .
repetir
se (N for impar) então imprimir (N);
atribuir N - 3 a N;
até que N < 3;

Para um valor inicial igual a 13 para a variável N, a estrutura enquanto ... faça ... equivalente e que gera os mesmos resultados, está indicada na alternativa:

Alternativas
Comentários
  • no repetir temos que ir até que (N < 3) seja VERDADEIRO ou seja vale para 13, 10, 7, 4. Quando recebe o valor 1, sai.
    Já no enquanto, temos que ir até que a condição seja FALSA. É o contrário. Vai deixar de valer quando for 1. Ou seja , enquanto (N >= 3) for VERDADEIRO, continuo.

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

O método de otimização empregado exclusivamente para a solução de problemas, no qual as funções objetivo e de restrição são lineares, é denominado

Alternativas

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

Acerca de pseudocódigo, descrição narrativa e fluxograma, que são usados para a descrição de algoritmos, julgue os próximos itens.

Para especificar os passos de um algoritmo, o pseudocódigo utiliza uma linguagem natural com característica pouco formal, o que pode causar ambiguidade e propiciar interpretações errôneas.

Alternativas
Comentários
  • Para especificar os passos de um algoritmo, o pseudocódigo a descrição narrativa utiliza uma linguagem natural com característica pouco formal, o que pode causar ambiguidade e propiciar interpretações errôneas.

    Exemplo da descrição narrativa Tomar Banho.:
    Passo 1 - Entrar no banheiro e tirar a roupa
    Passo 2 - Abrir a torneira do chuveiro
    Passo 3 - Entrar na água
    Passo 4 - Ensaboar-se
    Passo 5 - Sair da água
    Passo 6 - Fechar a torneira
    Passo 7 - Enxugar-se
    Passo 8 - Vestir-se
  • O o pseudocódigo não é ambíguo.
  • Pseudocódigo 
    Os algoritmos são descritos em uma linguagem chamada pseudocódigo. Este nome é uma alusão à posterior implementação em uma linguagem de programação, ou seja, quando formos programar em uma linguagem, por exemplo Visual Basic, estaremos gerando código em Visual Basic.
    Por isso os algoritmos são independentes das linguagens de programação. Ao contrário de uma linguagem de programação não existe um formalismo rígido de como deve ser escrito o algoritmo. O algoritmo deve ser fácil de se interpretar e fácil de codificar. Ou seja, ele deve ser o intermediário entre a linguagem falada e a linguagem de programação.

    fonte: Lógica de Programação – A Construção de Algoritmos e Estruturas de Dados – São Paulo: Forbellone, André Luiz Villar - MAKRON, 1993.
  • No meu entendimento esta questão estaria correta por causa do "pode". Se o pseudocódigo não for feito com um mínimo de cuidado, ele pode causar ambiguidade e, por consequência, interpretações errôneas.
  • (ERRO EM VERMELHO) Para especificar os passos de um algoritmo, o pseudocódigo utiliza uma linguagem natural com característica pouco formal, o que pode causar ambiguidade e propiciar interpretações errôneas.

     

    ---> Pseudocódigo realmente utiliza linguagem natural com características pouco formal, mas NÃO causam ambiguidade nem interpretações errôneas, é totalmente ao contrário, pois propicia uma codificação PRECISA e SEM AMBIGUIDADES.

     

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

    Pseudocódigo / Pseudolinguagem
     O pseudocódigo permite que o programador possa se concentrar na lógica e nas estruturas de controle e não com as regras de uma
    linguagem específica.
     Ao contrário de uma linguagem de programação não existe um formalismo rígido de como deve ser escrito o algoritmo. O algoritmo deve ser fácil de se interpretar e fácil de codificar, porém, sem ambiguidades.

     

    Fonte: Itnerante

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

  • O pseudocódigo, embora não seja nenhuma linguagem de programação específica, já possui formalismos em seu algoritmo a ponto de não deixar dúvidas e nem ambiguidades.

    Afinal, precisa possuir todas as características de um bom algoritmo, inclusas a finitude e a clareza.

    Item errado.

  • Assertiva errada, a linguagem natural na estrutura do algoritmo não pode haver ambiguidade.

    Resposta: Errado

  • pseudocódigo não usa linguagem natural

  • Victor Dalton | Direção Concursos

    O pseudocódigo, embora não seja nenhuma linguagem de programação específica, já possui formalismos em seu algoritmo a ponto de não deixar dúvidas e nem ambiguidades.

    Afinal, precisa possuir todas as características de um bom algoritmo, inclusas a finitude e a clareza.

    Item errado.

  • Quanto a letra "B", cabe a seguinte atualização: É cabível ação de exigir de contas ajuizada pelo alimentante, em nome próprio, contra a genitora guardiã do alimentado para obtenção de informações sobre a destinação da pensão paga mensalmente, desde que proposta sem a finalidade de apurar a existência de eventual crédito (STJ. 3ª Turma. REsp 1.814.639-RS, Rel. Min. Paulo de Tarso Sanseverino, Rel. Acd. Min. Moura Ribeiro, julgado em 26/05/2020, Info 673).

  • Quanto a letra "B", cabe a seguinte atualização: É cabível ação de exigir de contas ajuizada pelo alimentante, em nome próprio, contra a genitora guardiã do alimentado para obtenção de informações sobre a destinação da pensão paga mensalmente, desde que proposta sem a finalidade de apurar a existência de eventual crédito (STJ. 3ª Turma. REsp 1.814.639-RS, Rel. Min. Paulo de Tarso Sanseverino, Rel. Acd. Min. Moura Ribeiro, julgado em 26/05/2020, Info 673).

  • Obrigado pela atualização.


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

Acerca de pseudocódigo, descrição narrativa e fluxograma, que são usados para a descrição de algoritmos, julgue os próximos itens.

A descrição narrativa é uma forma de algoritmo que utiliza linguagem estruturada e, embora sua estrutura e simbologia apresentem pequenas diferenças em relação à língua portuguesa, também é chamada de português estruturado.

Alternativas
Comentários
  • Descrição Narrativa é a linguagem de programação que os pseudo Engenheiros de Software conhecem. E  como não é estruturado, não existe compilador que traduza isso para código de máquina.

    Por isso SEMPRE EXISTIRÃO PROGRAMADORES.

    (#joke)
  • A descrição narrativa Pseudocódigo é uma forma de algoritmo que utiliza linguagem estruturada e, embora sua estrutura e simbologia apresentem pequenas diferenças em relação à língua portuguesa, também é chamada de português estruturado.
  • O pseudocódigo utiliza linguagem estruturada e é também chamado de português estruturado.

    A descrição narrativa utiliza linguagem natural para especificar os passos para a realização das tarefas. Isso dá margem a más interpretações e ambiguidades.

    O fluxograma é uma forma universal de representação, pois se utiliza de figuras geométricas para ilustrar os passos a serem seguidos para a resolução dos problemas é chamada também de diagrama de blocos.


  • A descrição narrativa é próxima da linguagem falada, e não utiliza nenhuma linguagem estruturada.

    É uma narração por escrito.

    Item errado.

  • A descrição narrativa utiliza linguagem natural para especificar os passos para a realização das tarefas. Isso dá margem a más interpretações e ambiguidades. O português estruturado – pseudocódigo – realmente utiliza uma linguagem estruturada, mas não é a mesma coisa que descrição narrativa

    (Errado).


ID
608344
Banca
IADES
Órgão
PG-DF
Ano
2011
Provas
Disciplina
Algoritmos e Estrutura de Dados
Assuntos

Os algoritmos são compostos por estruturas de controle de três tipos: sequencial, condicional e de repetição. Assinale a alternativa que apresenta apenas um tipo de estrutura de controle.

Alternativas
Comentários
  • Na minha opinião a resposta E está errada pois não há nada condicional...
    Marquei a B pois oferece o que o enunciado pede!!!
  • Concordo com o colega sobre a letra E porém acredito que a C estaria mais correta do que a letra B porque mostra uma estrutura de condição independente da estrutura de repetição também apresentada.
  • Concordo com o colega acima. A resposta correta deveria ser a letra C, pois é a única que apresenta ao mesmo tempo os três tipos: sequencial, condicional e de repetição.
  • Pessoal,
    A questão está com enunciado incompleto.
    O certo: Assinale a alternativa que apresenta apenas um tipo de estrutura de controle.
    Gabarito é mesmo o item "E" - Tipo sequêncial
      
  •   Bom pessoal, não vejo nada de errado com a questão. A questão diz que há três tipos de estrutura de controle, a banca quer que vc identifique a questão que tem somente um dos três tipos de estrutura de controle, que é exatamente a letra E.
  • de fato é a "E" mesmo!
  • E qual é a estrutura de controle que tem na alternativa "E"? Sinceramente não entendi.
  • As letras A e B também tem apenas uma estrutura de controle, pois a estrutra sequencial precisa dos delimitadores início e fim.
  • a) possui estruturas sequenciais e condicionais (errado)
    b) possui estruturas sequenciais, condicionais e de repetição (errado)
    c) possui estruturas sequenciais, condicionais e de repetição(errado)
    d) possui estruturas sequenciais e condicionais(errado)
    e) possui apenas estruturas sequenciais (certo pois o comando da questão pede apenas o algoritmo com UM tipo de estrutura).
  • Demorou um pouco para cair a ficha, mas entendi. Muitas vezes consideramos como estrutura de controle somente as estruturas condicionais e as estruturas de repetição, e à estrutura sequencial não damos a devida atenção por ser a mais simples. Então, ao analisar o código, apenas verifiquei onde tinha condicional e repetição, marcando letra D, que apresenta UMA estrutura condicional. Foi o meu erro, é automático, menospresei a sequencial. Apenas UM tipo de estrutura é exposto na alternativa E, que apresenta justamente a estrutura sequencial. 

  • A correta é a letra E, pois apresenta somente estrutura sequencial.


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

Acerca de algoritmos, estruturas de dados e lógica de programação,
julgue os itens subsequentes.

O algoritmo de Dijkstra utiliza a técnica de relaxamento e produz, ao final de sua execução, uma árvore de caminhos mais curtos entre um vértice origem s e todos os vértices que são alcançáveis a partir de s.

Alternativas
Comentários
  • O algoritmo de Dijkstra resolve o problema de caminhos mais curtos de única origem em um grafo orientado ponderado G = (V, E) para o caso no qual todos os pesos de arestas são não negativos.

    O algoritmo de Dijkstra utiliza a técnica de relaxamento de arestas.

    Pelo fato do algoritmode Dijkstra sempre escolher o vértice "mais leve" ou "mais próximo" dizemos que ele utiliza uma estratégia gulosa.

    Cormen 1ª ed. Pag.470, 471 e 472.
  • Algoritmo de Dijkstra

    O algoritmo de Dijkstra é o mais famoso dos algoritmos para cálculo de caminho de custo mínimo entre vértices de um grafo e, na prática, o mais empregado. 

    Escolhido um vértice como raiz da busca, este algoritmo calcula o custo mínimo deste vértice para todos os demais vértices do grafo. O algoritmo pode ser usado sobre grafos orientados (dígrafos), ou não, e admite que todas as arestas possuem pesos não negativos (nulo é possível). Esta restrição é perfeitamente possível no contexto de redes de transportes, onde as arestas representam normalmente distâncias ou tempos médios de percurso; poderão existir, no entanto, aplicações onde as arestas apresentam pesos negativos, nestes casos o algoritmo não funcionará corretamente.

  • Prezados,

    O algoritmo de Dijkstra soluciona o problema do caminho mais curto num grafo, dirigido ou não, com arestas de peso não negativo. 
    Ele utiliza a técnica de relaxamento, essa técnica diz que para um arco(u,v), consiste em testar se é possível melhorar o caminho mais curto para v passando por u, em caso afirmativo, atualizar o atributo do nó v.

    Portanto a questão está correta.



ID
666043
Banca
FUNCAB
Órgão
MPE-RO
Ano
2012
Provas
Disciplina
Algoritmos e Estrutura de Dados
Assuntos

Sobre o algoritmo abaixo, é correto afirmar que:

Procedimento XYZ( TABELA, NUMERO DE CODIGOS, CEP);
tipo tabela de conversão = vetor[1: NUMERO DE CODIGOS] conversão;
tipo de conversão = registro inteiro: CA, CN fim registro;
tabela de conversão: TABELA;
inteiro: NUMERODECODIGOS, CEP;
inicio

       inteiro comeco, meio, fim;
       COMECO <- 1; FIM <- NUMERODECODIGOS;
       repita
       MEIO ,<-( COMECO + FIM) /2 
       se CEP <TABELA[MEIO].CA;
                então FIM <- MEIO -1;
                senão
                       se CEP>TABELA[MEIO].CA;
                       então
                       CEP <- TABELA[MEIO] +1;
                       senão
                       Imprima( " Falta CEP", NUMERO);
            fim se;
            abandone;
      fim se; 
fim se;
até COMECO> FIM;
fim(XYZ)


















Alternativas

ID
696556
Banca
FCC
Órgão
TJ-RJ
Ano
2012
Provas
Disciplina
Algoritmos e Estrutura de Dados
Assuntos

O seguinte trecho de pseudo-código representa a definição de uma função (sub-rotina) f com um único argumento x.

´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´
f(x)

x ← x + 1

devolva x
´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´
Considere agora o seguinte trecho de código que invoca a função f definida acima.
´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´
a ← 0

escreva a
escreva f(a)
escreva a
´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´
A execução do trecho de código acima resultaria na escrita de


Alternativas
Comentários
  • Pessoal, esta questão envolve um conhecimento básico em Linguagens de Programação (em sentido amplo).

    Vamos analisar os conceitos de passagem por referência e passagem por valor:
    • Passagem por valor: o valor da variável é passado para a função através de uma cópia que é alocada momentâneamente em uma varíavel (x) até que a função temine sua execução. Ou seja, apenas os valores e não o parâmetro são passados à função.

     

    • Passagem por referência: na passagem por referência, o que é passado para a função (x) não é apenas a copia do valor da variável, mas a referência para a própria, e qualquer alteração de valor dentro da função, é aplicada à variável.
    Com estes conceitos em mente, podemos ver que a situação do item C é a única correta, pois as saídas correspondem respectivamente à passagem por valor e por referência.

  • Passagem de parâmetros por valor: A função recebe uma cópia da variável que é fornecida quando é invocada. Todas as alterações feitas dentro da função não vão afectar os valores originais.

    Passagem de parâmetros por referência: Neste caso o que é enviado para a função é uma referência às variáveis utilizadas, e não uma simples cópia, pelo que as alterações realizadas dentro da função irão certamente alterar os valores contidos nessas variáveis.

    Fonte: http://gracianotorrao.com/2008/05/19/funcoes-passagem-de-parametros-por-valorreferencia-em-cc/



ID
740404
Banca
CEPERJ
Órgão
PROCON-RJ
Ano
2012
Provas
Disciplina
Algoritmos e Estrutura de Dados
Assuntos

Observe o algoritmo abaixo, referente a um programa de computador, onde / representa divisão entre inteiros.

      algoritmo prog;
     var 
         array[1..8] of inteiros : tab;
         lógica : achou;
         inteiro : D, m, ini, fim, centro;
     procedimento PROC11;
     início
         para m de 1 até 8 faça ler(tab[m]);
     fim_do_procedimento;
     procedimento PROC22;
     início
         ler(D);
         achou=false;
         ini = 1;fim = 8;centro = (ini+fim) / 2;
         enquanto (D < > tab[centro]) e (ini < > fim) faça
              início
                 se D > tab[centro] então ini = centro+1
                                           senão fim = centro;
                 centro = (ini + fim) / 2;
              fim_do_procedimento;
         se D = tab[centro] então achou = VERDADEIRO
                                   senão achou = FALSO;
         se achou então escreva(D,' encontra-se na posição ',centro)
                        senão escreva(D,' não se encontra na tabela...');
     fim_do_procedimento;
     início
        PROC11;
        PROC22;
     fim_do_algoritmo.


 

Alternativas
Comentários
  • Letra E.
    O algoritmo da questão preenche um vetor de inteiros de 8 posições e, dado um valor inteiro D, retorna a posição dele no vetor, se o encontrar.
    O procedimento de busca começa pelo meio do vetor e, partir da comparação de valores, redefine o início ou o fim, reduzindo o escopo de busca, (sempre pela metade), e pegando o valor do meio desse novo escopo para comparação com D, até encontrar, ou se certificar que não o valor não está no vetor.
    Não está explicito, mas subentende-se que os valores lidos já estão ordenados.
  • O algoritmo se refere a uma busca binária, porém só é aplicável se o vetor "tab" estiver ordenado (o que não está explícito na questão).

  • Força Guerreiro!!!!!!


ID
754432
Banca
Marinha
Órgão
Quadro Complementar
Ano
2011
Provas
Disciplina
Algoritmos e Estrutura de Dados
Assuntos

Para encontrar uma solução ótima de um problema, os sistemas computacionais fazem uso de algoritmos que resolvem pequenas etapas a cada iteração. Assinale a opção que apresenta corretamente o uso de algoritmo GULOSO (Greedy Algorithm).

Alternativas
Comentários
  • O gabarito é a letra A.

     

    Algoritmo guloso tenta resolver o problema fazendo a escolha localmente ótima em cada fase, com a esperança de encontrar um ótimo global.


ID
754483
Banca
Marinha
Órgão
Quadro Complementar
Ano
2011
Provas
Disciplina
Algoritmos e Estrutura de Dados
Assuntos

Em relação uso de Análise de Algoritmos, assinale a opção correta.

Alternativas
Comentários
  • As complexidades do tipo "log" são as menores!


ID
758620
Banca
CESGRANRIO
Órgão
CMB
Ano
2012
Provas
Disciplina
Algoritmos e Estrutura de Dados
Assuntos

Na resolução de problemas relacionados com a construção de algoritmos, são usadas diversas estratégias. Uma delas consiste em dividir o problema em problemas menores até que cada parte seja pequena o bastante para que a solução seja encontrada.

Tal estratégia denomina-se

Alternativas
Comentários
  • Decomposição ou Refinamento 

  • Força Guerreiro!!!!!!


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

Acerca da utilização de algoritmos e fluxogramas em lógica de
programação, julgue os itens a seguir.

Quando um break é encontrado dentro de um laço for, a execução do código é interrompida e o programa é finalizado.

Alternativas
Comentários
  • Quando o comando break é utilizado dentro de um comando for o laço é imediatamente interrompido e o programa continua a execução no comando seguinte ao comando for.
  • O programa não é finalizado, e sim o laço.
  • Errado: Break interrompe loop. O programa continua depois da instrução break.

    public static void main ("valor");

    $a=int;
    $b=int;

    a=input("digite um valor de 1 a 10");
    b=15;

    For a<b,do {
    a=a+1
    System.out.println("contagem para a>b);
    loop
    Break
    }
  • Não é bem assim. O break interrompe o laço for, mas a execução prossegue normalmente nas instruções subsequentes ao laço. O programa não é necessariamente finalizado.

    Resposta: Errado

  • Errada.  A execução do código é interrompida e o laço é encerrado, retomando a execução normal do programa, imediatamente após o laço.

  • Questão errada meus queridos, um brake é uma função usada no sistema para pará-lo em determinado momento de sua execução, esta técnica é muito utilizada dentro de funções, procedures para conferirmos algumas funções do sistema.

    Resposta: Errado

  • O programa é finalizado apenas quando break encontra o comando IF. Obviamente, se atender as condições desse comando.

    ALGORITMO EXIBE_NUMEROS_COM_BREAK;

    Var N: inteiro;

    Inicio

    Leia(N);

    FOR cont ←1 até N passo 1 

    Escreva(cont);

    if (cont >=25) break;

    END-FOR

    Imprima (“O programa chegou ao seu final”);

    Fim

    Esse exemplo que tem no material do Direção mostra muito bem. Se caso cont for maior ou igual a 25 o programa é encerrado.

  • Gabarito ERRADO

    O programa não é finalizado.

    É interrompido só as estruturas de repetição.

    O comando break pode ser utilizado com for, while e repeat until, sem problemas.

  • O laço será interrompido à força, e o programa continua normalmente, fora do laço.

  • Força Guerreiro!!!!!!


ID
779161
Banca
CESPE / CEBRASPE
Órgão
TRE-RJ
Ano
2012
Provas
Disciplina
Algoritmos e Estrutura de Dados
Assuntos

Com relação a diagrama de blocos, julgue o item abaixo.

Os diagramas de estado, também conhecidos como diagramas de bloco, são representações gráficas de algoritmos, ou seja, das instruções e(ou) módulos do processamento.

Alternativas
Comentários
  • Não, diagramas de estados ou máquinas de estados é responsável pela modelagem do comportamento de uma sociedade de objetos e não representações gráficas de algoritimos.
  • Questão errada. Esses conceitos não podem ser confundidos:
    • Diagrama de estado (ou modelo de máquina de estado) representa os diferentes estados que um certo objeto pode assumir. Normalmente não há uma sequência ordenada de estados, mas as transições podem estar condicionadas a certo eventos.
      Esse diagrama é amplamente usado em computação, exemplos: engenharia de software (UML), linguagens formais e autômatos, processos estocásticos, sistemas operacionais, etc.

    • Diagramas de bloco é um modelo gráfico para representar uma sequência ordenada de passos em um processo.
      Na área da lógica de programação esse diagrama (também chamado de fluxograma) representa a sequência de passos de um determinado algoritmo.
     
  • Força Guerreiro!!!!!!


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

A respeito de algoritmos, estruturas de dados e objetos, julgue o  item  que se segue.

O algoritmo mostrado a seguir resume corretamente a inserção com um leque de, no máximo, sete elementos.

                                    Type leque = record
                                                  topo: integer;
                                                  memo: array [1..7] of char;
                                                  end;
                                     var L:leque;
                                     p.topo: = 0
                                     procedure push (var L:leque; x:char);
                                     begin
                                     if  not L.topo>7 then
                                         begin
                                               L.topo :=L.topo+1;
                                               L.memo [L.topo]:= x;
                                          end;
                                     end;

Alternativas
Comentários
  • Não conheço esse tipo leque. Alguém comenta?


ID
795148
Banca
FCC
Órgão
TST
Ano
2012
Provas
Disciplina
Algoritmos e Estrutura de Dados
Assuntos

Fornecidos os dados das candidatas ao time de basquete: altura, peso e idade e as restrições abaixo:


altura: de 1.70 a 1.85 m
peso: de 48 a 60 kg
idade: de 15 a 20 anos


O trecho de algoritmo, em pseudocódigo, que verifica corretamente se os dados se enquadram nas restrições fornecidas é:

Alternativas
Comentários
  • A resposta certa é letra D

    se ( (altura >= 1.70 E altura <= 1.85)
        E (peso >= 48 E peso <=60)
        E (idade >= 15 E idade <= 20) )

    Para obedecer as restrições TODOS os valores devem ser encaixar nos intervalos fornecidos para altura, peso e idade. Por isso, utiliza-se o conectivo
    'E' .
  • Complementando a resposta da colega Paula, vale recordar a tabela verdade do conectivo E:

    P   Q       P e Q

    V   V         V

    V   F         F

    F   V         F

    F   F         F

    Sempre que houver um dos elementos igual a falso, o resultado da expressão será falso. Para o resultado ser verdadeiro, é necessário que todos os elementos da expressão sejam verdadeiros. Esta ideia pode ser usada para garantir que variáveis respeitem um intervalo especificado como o exercício pede.


  • Claro que a D está correta, mas o erro na C é só 170 no lugar do 1.70?

    Em se tratando de pseudocódigo a sintaxe (48 ≤ peso ≤ 60) não faria sentido também?

  • d) A condição esta exigindo uma restrição, o qual se satisfaz se tdos os atrinutos forem maiores ou iguais ao parametro inicial && menor ou igual ao parametro final. A operaçõ tem que ser AND porque tudo tem que ser V para resultado ser V

  • O erro da letra (A) é a variável idade está fora dos parênteses. O erro da letra (B) é a falta do sinal de igualdade e símbolo de maior. O erro da letra (C) é que foi colocado um sinal de menor ao invés de maior.

  • Força Guerreiro!!!!!!


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

Considerando que A seja um algoritmo, {E1, ..., Em} o conjunto de todas as entradas possíveis de A, e ti o número de passos efetuados por A quando a entrada for Ei , assinale a opção correta.

Alternativas

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

Assinale a opção cujo pseudocódigo determina corretamente qual é o maior número entre A e B.

Alternativas

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

O algoritmo que escreve a sequência 1, 1, 2, 3, 5, 8, 13 é

Alternativas
Comentários
  • Com o mínimo de lógica de programação é possível a resolução sem embaraço. Esse algoritmo é o de Fibonacci.

    Dica: Siga linha a linha com atenção.

     

    Resolução

    Inicio

    X1 = 1

    X2 = 1

    1 (escreva = mostra na tela)

    1 (escreva = mostra na tela)

    X3 = 1 + 1                                                                    OU seja, X3 = 2

    Enquanto X3 for menor igual a 13 faca                     Perceba que nessa primeira iteração o valor de X3 = 2

    2

    X1 recebe X2                                                               Não houve troca de valores, pois X1 e X2 são iguais a 1

    X2 recebe X3                                                               O valor de X3 passa para X2, logo X2 = 2

    X3 recebe X1 + X2                                                      O valor de X3 é igual a 1 + 2 = 3

    Fim Fim

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

    Agora volta o laço do ENQUANTO, veja a condição: Enquanto X3 for menor que 13.

    Temos essa condição?

    SIM, pois X3 é igual a 3.

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

    De agora em diante basta repetir o laço.

    Vou fazer o segundo laço:

    X3 = 3

    X1 recebe X2                                      O valor de X1 passa para 2

    X2 recebe X3                                      O valor de X3 passa para 3

    X3 = X1 + X2                                      X3 = 5

    Fim

    Fim

     

    Assim segue os outros laços, perceba que dentro do laço os valores vão sendo atualizados a cada repetição.

    Obs: AInda bem que a alternativa era a primeira ASSERTIVA ( LETRA A ).

    Espero ter ajudado!

  • Fiz o teste de mesa apenas em 2 laços do enquanto.

     

    X1   X2   X3               TELA

    1      1      2                1 1 2

     

     

    Laço Enquanto

    1      2      3                1    1      2      3

    2      3      5                1    1      2       3      5

     

    Letra A

  • Força Guerreiro!!!!!!


ID
894322
Banca
CESPE / CEBRASPE
Órgão
TRT - 10ª REGIÃO (DF e TO)
Ano
2013
Provas
Disciplina
Algoritmos e Estrutura de Dados
Assuntos

Julgue os itens a seguir, relativos a algoritmos.

A abstração é processo em que o algoritmo identifica as propriedades relevantes do fenômeno que está sendo modelado. Ao se empregar um modelo abstrato, centra-se unicamente nas propriedades relevantes de cada operador, conforme a finalidade da abstração, desconsiderando-se as propriedades irrelevantes.

Alternativas
Comentários
  • Abstração
     
    Como qualquer modelo, um algoritmo é uma abstração da realidadeA abstração é o processo de identificar as propriedades relevantes do fenômeno que esta sendo modelado. Usando o modelo abstrato, podemos nos centrar unicamente nas propriedades relevantes para nós, dependendo da finalidade da abstração, e ignorar as irrelevantes.

    fonte e mais informações: http://www.faccat.com.br/dti/lp1.htm 
  • Força Guerreiro!!!!!!


ID
894325
Banca
CESPE / CEBRASPE
Órgão
TRT - 10ª REGIÃO (DF e TO)
Ano
2013
Provas
Disciplina
Algoritmos e Estrutura de Dados
Assuntos

Julgue os itens a seguir, relativos a algoritmos.

O algoritmo abaixo executa o cálculo do volume de uma esfera de raio R.

Início
Real VOLUME, PI, R;
Constante PI = 3,1416;
R=0;
Enquanto R<= 6 Faça
VOLUME=4/3*PI*(R**3);
Imprima (R,VOLUME);
R=R+2;
Fim Enquanto;
Fim.


Alternativas
Comentários
  • Por que o gabarito é "Certo" se na verdade é realizado o calculo de 4 esferas(com R igual a 0, 2, 4 e 6) e não de uma como diz no enunciado?

  • Thales Augusto, quando a questão fala "...cálculo do volume de uma...", trata-se de um artigo indefinido e não de um numeral, sendo assim independe o numero de loops que o ciclo faz.

  • Força Guerreiro!!!!!!


ID
894328
Banca
CESPE / CEBRASPE
Órgão
TRT - 10ª REGIÃO (DF e TO)
Ano
2013
Provas
Disciplina
Algoritmos e Estrutura de Dados
Assuntos

Julgue os itens a seguir, relativos a algoritmos.

O pseudocódigo abaixo representa um algoritmo que efetua a multiplicação de dois inteiros quaisquer.

algoritmo "exercício 1c"
var n1, n2: inteiro
inicio
escreva ("Digite o multiplicando e a seguir")
escreva (" o multiplicador (ambos inteiros): ")
leia (n1, n2)
escreva (n1, "*", n2, "=",n1*n2)
fimalgoritmo


Alternativas
Comentários
  • Expressões Aritméticas

    Expressões aritméticas são aquelas que apresentam como resultado um valor numérico que pode ser um número inteiro ou real, dependendo dos operandos e operadores. Os operadores aritméticos disponíveis em a-- estão mostrados na Tabela a seguir.

    Operador
    Descrição
    Prioridade
    +
    Soma
    3
    -
    Subtração
    3
    *
    Multiplicação
    2
    /
    Divisão
    2
    %
    Módulo (Resto da divisão inteira)
    2
    +
    Operador unário (sinal de mais)
    1
    -
    Operador unário (sinal de menos)
    1

     

    A prioridade indica a ordem em que cada operação deverá ser executada. Quanto menor o número maior a prioridade da operação. Observe que o operador de multiplicação é o caracter asterisco, um símbolo que é empregado na maioria das linguagens para esta operação.



    fonte: http://equipe.nce.ufrj.br/adriano/c/apostila/algoritmos.htm

  • Força Guerreiro!!!!!!


ID
894331
Banca
CESPE / CEBRASPE
Órgão
TRT - 10ª REGIÃO (DF e TO)
Ano
2013
Provas
Disciplina
Algoritmos e Estrutura de Dados
Assuntos

Julgue os itens a seguir, relativos a algoritmos.

Na maioria das linguagens de programação, são utilizadas prioridades de operadores, tais como multiplicação e(ou) divisão e adição e(ou) subtração, sendo essas duas prioridades precedentes das operações embutidas em parênteses encadeados mais internamente.

Alternativas
Comentários
  • Expressões Aritméticas

    Expressões aritméticas são aquelas que apresentam como resultado um valor numérico que pode ser um número inteiro ou real, dependendo dos operandos e operadores. Os operadores aritméticos disponíveis em a-- estão mostrados na Tabela a seguir.

    Operador
    Descrição
    Prioridade
    +
    Soma
    3
    -
    Subtração
    3
    *
    Multiplicação
    2
    /
    Divisão
    2
    %
    Módulo (Resto da divisão inteira)
    2
    +
    Operador unário (sinal de mais)
    1
    -
    Operador unário (sinal de menos)
    1

     

    A prioridade indica a ordem em que cada operação deverá ser executada. Quanto menor o número maior a prioridade da operação. Observe que o operador de multiplicação é o caracter asterisco, um símbolo que é empregado na maioria das linguagens para esta operação.

    Expressões aritméticas podem manipular operandos de dois tipos: reais e inteiros. Se todos os operandos de uma expressão são do tipo inteiro então a expressão fornece como resultado um número inteiro. Caso pelo menos um dos operandos seja real o resultado será real. Isto pode parecer estranho a princípio, mas este procedimente reflete a forma como as operações são executadas pelos processadores. Por exemplo o resultado da operação 1/5 é 0, porque os dois operadores são inteiros. Caso a expressão tivesse sido escrita como 1.0/5 então o resultado 0.2 seria o correto. A seguir mostramos exemplos de algumas expressões aritméticas:

    • A+B-C
    • a/b
    • 3.14*(A+B)

    Observar que as expressões somente podem ser escritas de forma linear, isto é o sinal de divisão é uma barra inclinada. Portanto frações somente podem ser escritas conforme o exemplo acima (a/b). Outro ponto importante é a ordem de avaliação das expressões, as prioridades mostradas na Tabela dos operadores não é suficiente para resolver todas as situações e precisamos apresentar algumas regras adicionais:

    1. Deve-se primeiro observar a prioridade dos operadores conforme a Tabela dos operadores, ou seja operadores com maior prioridade (números menores) são avaliados primeiro. Caso haja empate na ordem de prioridade resolver a expressão da esquerda para a direita.
    2. Parênteses servem para mudar a ordem de prioridade de execução das operações. Quando houver parênteses aninhados (parênteses dentro de parênteses) as expressões dentro dos mais internos são avaliadas primeiro.

    fonte: http://equipe.nce.ufrj.br/adriano/c/apostila/algoritmos.htm

  • Pelo que eu entendi, a CESPE, só pra variar, deu mais uma das suas invertidas nos conceitos: as operações aritméticas dentro dos parênteses precedem as que estão fora, além de, naturalmente, os operandos de multiplicação e divisão precederem os de adição e subtração. Isto é uma regra da matemática e que obviamente deve ser implementada nas linguagens de programação.

  • A ordem de prioridades de execução é : Multiplicação, Divisão, Soma e Diminuição.

    Note 2 + 3 * 4  é o mesmo que 2+12 = 14, porém se colocassemos parenteses na expressão a ordem de prioridade é aquela que está dentro dos parenteses, veja : (2+3) * 4 é igual a 5 * 4 = 20.

    Logo, as prioridades serão modificadas quando se tratar de operações embutidas em parênteses.

    http://www.din.uem.br/~yandre/fundamentos_producao/OPERADORES_EXPRESSOES.pdf

     

  • Força Guerreiro!!!!!!


ID
906292
Banca
FCC
Órgão
TRT - 9ª REGIÃO (PR)
Ano
2013
Provas
Disciplina
Algoritmos e Estrutura de Dados
Assuntos

Considere o algoritmo em pseudo linguagem:

início
caracter: nome, sexo;
      imprima (“Qual é o seu nome? ”);
      leia(nome);
      imprima (“Qual é o seu sexo? (f/m) ”);
      leia (sexo);

      se (sexo = ‘f’ E sexo = ‘F’)
      então imprima (“Você é do sexo feminino. ”);
      senão
            se (sexo = ‘m’ E sexo = ‘M’)
                  então imprima (“Você é do sexo masculino. ”);
            senão
                  imprima (“Você digitou um valor de sexo invalido ”);
            fim se;
      fim se;
fim.


Sobre o algoritmo acima é correto afirmar que

Alternativas
Comentários
  • se (sexo = ‘f’ E sexo = ‘F’)
          então imprima (“Você é do sexo feminino. ”);
          senão
                se (sexo = ‘m’ E sexo = ‘M’)
                      então imprima (“Você é do sexo masculino. ”);
                senão
                      imprima (“Você digitou um valor de sexo invalido ”);
                fim se;
          fim se;

    O algorítimo está verificando se a variável sexo é "f" E "F". Ora a variável não pode ter dois valores distintos em um mesmo momento. Para satisfazer o operador E ambas as proposições DEVEM ser verdadeiras. A lógica do algoritmo ficou comprometida, o correto seria ter utilizado o operador OU da seguinte forma:

    se (sexo = ‘f’ OUsexo = ‘F’)
          então imprima (“Você é do sexo feminino. ”);
          senão
                se (sexo = ‘m’ OU sexo = ‘M’)
                      então imprima (“Você é do sexo masculino. ”);
                senão
                      imprima (“Você digitou um valor de sexo invalido ”);
                fim se;
          fim se;
  • Perfeito do comentário do colega Clarck, o erro está no operador "E", que deviria ser o "OU".

  • início
    caracter: nome, sexo;
          imprima (“Qual é o seu nome? ”);
          leia(nome);
          imprima (“Qual é o seu sexo? (f/m) ”);
          leia (sexo);

          se (sexo = ‘f’ E sexo = ‘F’)    ----->> O ERRO ESTÁ NO CÓDIGO DEVERIA SER 'OU' NO LUGAR DE 'E'
          então imprima (“Você é do sexo feminino. ”);
          senão
                se (sexo = ‘m’ E sexo = ‘M’) ----->> O ERRO ESTÁ NO CÓDIGO DEVERIA SER 'OU' NO LUGAR DE 'E'
                      então imprima (“Você é do sexo masculino. ”);
                senão
                      imprima (“Você digitou um valor de sexo invalido ”);
                fim se;
          fim se;
    fim.

  • A verificação do algoritmo é comprometida pelo fato de se utilizar E, e não OU. Veja:

    se (sexo = ‘f’ E sexo = ‘F’)
          então imprima (“Você é do sexo feminino. ”);
          senão
                se (sexo = ‘m’ E sexo = ‘M’)
                      então imprima (“Você é do sexo masculino. ”);
                senão
                      imprima (“Você digitou um valor de sexo invalido ”);
                fim se;
          fim se;

    fim se.

    Nesse caso, o algoritmo entende que a variável sexo terá que obter dois valores para ser verdadeiro (m e M ou f e F), o que torna a lógica errada, invalidando o valor de sexo.

     

  • e

    Deveria usar uma função alternativa em vez de conjuntiva (operação OR em vez de AND) porque nao é possivel atribuir a uma variavel simples 2 valores ao mesmo tempo ocupando o mesmo indice

  • Força Guerreiro!!!!!!


ID
917200
Banca
ESAF
Órgão
MF
Ano
2013
Provas
Disciplina
Algoritmos e Estrutura de Dados
Assuntos

Uma das diferenças entre o algoritmo de balde de símbolos (token bucket algorithm) e o algoritmo de balde furado (leaky bucket algorithm) se verifica quando o “balde” enche. Nesse momento,

Alternativas
Comentários
  • Técnicas para se alcançar boa qualidade de serviço: algoritmo do balde furado

    Outra técnica para alcançar boa qualidade de serviço é o algoritmo do balde furado. Imagine um balde com um pequeno furo no fundo, como ilustra a figura (a) acima. Independente da velocidade com que a água entra no balde, o fluxo de saída ocorrerá em uma taxa constante, ρ, quando houver qualquer quantidade de água no balde e zero quando o balde estiver vazio. Além disso, quando o balde estiver cheio, a água que entrar escorrerá pelas bordas e se perderá (ou seja, não aparecerá no fluxo de saída sob o furo).

    A mesma idéia pode ser aplicada a pacotes, como mostra a figura (b). Conceitualmente, cada host está conectado à rede por uma interface que contém um balde furado, ou seja, uma fila interna finita. Se um pacote chegar à fila quando ela estiver cheia, o pacote será descartado.

    fonte: http://efagundes.com

  • LETRA D.   "o primeiro algoritmo nunca descarta pacotes, enquanto que o segundo descarta."

    Galera resolvi a questão da seguinte maneira. Caso concordem com meu raciocínio, sinalizem para os demais colegas, caso não, favor apontar meus erros. =].



    - Sobre o Leaky bucket

    Segundo Tanenbaum(2011,p.255),"Além disso, quando o balde estiver cheio até a capacidade B, qualquer água que entrar escorrerá pelas bordas e se perderá."



    -Sobre Token bucket

    Segundo Tanenbaum(2011,p.257),"Quando os token buckets são usados para controle de tráfego nos roteadores da rede, o algoritmo é simulado para garantir que não sejam enviados mais pacotes que o permitido."



    (FEITO POR MIM)**Sendo assim, podemos concluir que no Leaky Bucket quando o balde estiver cheio, qualquer pacote que chegar se escorrerá,perderá (leia-se será descartado), por sua vez, no Token Bucket, nunca haverá o descarte de pacotes, visto que há a limitação no envio dos pacotes para que não ultrapasse o permitido.


    Bibliografia:


    TANENBAUM, A. S.; WETHERALL, D. Redes de Computadores. 5. ed. São Paulo: Pearson, 2011.

  • balde furado (leaky bucket algorithm) = descarta.

    balde de símbolos (token bucket algorithm) = não descarta
  • Letra D.

    Formatação de tráfego: É usado para controlar a quantidade e a velocidade com que o tráfego é transmitido pela a rede. São utilizadas duas técnicas principais:

     

    1.Balde Furado(leaky bucket): formata o tráfego em rajadas para um tráfego de velocidade fixa tirando uma média da taxa de dados. Porém descarta pacotes se o balde estiver cheio.

     

    2.Balde de Fichas(token bucket): O “balde” armazena fichas geradas a uma taxa constante e as transmite com maior flexibilidade. Cada célula transmitida consome uma ficha. Se não houver fichas, uma célula deve esperar a geração de uma nova ficha. Quando o “balde” transborda, descarta fichas (não células ou byte).

     

    http://wiki.sj.ifsc.edu.br/wiki/index.php/RED29004-2014-1-Seminario1-QoS

  • Força Guerreiro!!!!!!


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

Acerca de estruturas de programação, julgue os itens que se seguem.

No trecho de pseudocódigo a seguir, o teste condicional na estrutura seqüencial enquanto ocorre no final. Isso significa que a possibilidade de a repetição não ser executada é nula, visto que, mesmo quando a condição assume falso na primeira verificação, o comando é executado,
enquanto (condição)
comando;


Alternativas
Comentários
  • Na estrutura de repetição ENQUANTO, o teste é feito no início e caso não seja valido o argumento a estrutura nem é executada

    G: errado


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

Acerca de estruturas de programação, julgue os itens que se seguem.

Considere que um analista, ao especificar um código que execute 10 vezes determinado comando x, escreva o seguinte pseudocódigo.

para i &rarr; 1 até 10 faça

comando X;


Nesse caso, é correto afirmar que o analista utilizou uma estrutura de repetição cuja execução realizará o propósito desejado corretamente.

Alternativas
Comentários
  • Correto. Porque de 1 a té 10 será repetido o comando X

  • Ela que propôe, mas quem figura como autor é o Ente Federativo que a mesma representa. Na petição, a qualificação será do Ente, representado pela procuradoria.


ID
973159
Banca
Aeronáutica
Órgão
EEAR
Ano
2012
Provas
Disciplina
Algoritmos e Estrutura de Dados
Assuntos

No algoritmo do programa abaixo, em português estruturado, temos as seguintes entradas para os valores da variável X quando requisitados: X [ 1 ] = 2, X [ 2 ] = 3, X [ 3 ] = 8, X [4] = 3. Identifique nas respostas abaixo qual será a saída do programa.

programa CONTA

var

RESULTADO : real

X : conjunto[ 1..4 ] de real

T : inteiro

Y : inteiro

início


Y ← 4

RESULTADO  ← 0

para T de 1 até 4 passo 1 faça

             leia X[ T ]

             RESULTADO ← RESULTADO + X[ T ]

fim_para

RESULTADO ← RESULTADO / Y

escreva RESULTADO


fim

Alternativas
Comentários
  • só somar os valores = 16 e depois dividir por 4 = 4.

    :)

  • Questão bem tranquila, só ir somando na variável resultado e depois dividir tudo por 4...

    Gabarito: D)


ID
990958
Banca
CESPE / CEBRASPE
Órgão
MS
Ano
2013
Provas
Disciplina
Algoritmos e Estrutura de Dados
Assuntos

AlgoritmoMaximo(x: inteiro; y: inteiro): inteiro
    início    
      se (y = 0) então    
          retorne x    
      senão          
          retorne AlgoritmoMaximo ( y, resto(x, y) )    
      fim-se
fim-função

Com base no algoritmo acima, julgue os itens.

No algoritmo é apresentada uma estrutura de repetição para que seja alcançado o resultado final desejado.

Alternativas
Comentários
  • errado- estrutura de repeticao é while && for. If verifica se uma condicao é verdadeira.

    e.g.

    int main()

    int i=0;

    while (i<10)

    {

    i++

    }

    //for

    int main ()

    for (int i=0;i>10;i++)

  • Estruturas de repetição são for, while e do...while. No algoritmo apresentado todo código é repetido mas pelo uso de recurso, onde é chamado toda a função até que uma condição de parada seja atingida.

    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.


    AlgoritmoMaximo(x: inteiro; y: inteiro): inteiro 
     início    
    se (y = 0) então    \\Condição de parada da recursão
    retorne x    
    senão          
    retorne AlgoritmoMaximo ( y, resto(x, y) )     \\ Chamada recursiva, chama o próprio método com novas entradas.
    fim-se 
    fim-função 


  • Força Guerreiro!!!!!!


ID
990961
Banca
CESPE / CEBRASPE
Órgão
MS
Ano
2013
Provas
Disciplina
Algoritmos e Estrutura de Dados
Assuntos

AlgoritmoMaximo(x: inteiro; y: inteiro): inteiro
    início    
      se (y = 0) então    
          retorne x    
      senão          
          retorne AlgoritmoMaximo ( y, resto(x, y) )    
      fim-se
fim-função

Com base no algoritmo acima, julgue os itens.

O valor do retorno da chamada para a função AlgoritmoMaximo(156, 270) é 6.

Alternativas
Comentários
  • Se eu estiver errado, por favor, me corrijam.
    Acredito que a questão esteja errada pois Y é diferente de 0, logo só precisamos retornar o valor de x (=260) e o programa chega ao fim. A questão diz que o programa retornará 6.

  • Bem, fazendo teste de mesa e seguindo as chamadas recursivas obtive isso, tornando a questão certa.

    AlgoritmoMaximo(156, 270)
    AlgoritmoMaximo(270, 156)
    AlgoritmoMaximo(156, 114)
    AlgoritmoMaximo(114, 42)
    AlgoritmoMaximo(42, 30)
    AlgoritmoMaximo(30, 12)
    AlgoritmoMaximo(12, 18)
    AlgoritmoMaximo(18, 6)
    AlgoritmoMaximo(6, 0) --> aqui o programa retornaria 0

  • Força Guerreiro!!!!!!


ID
1003561
Banca
AOCP
Órgão
Colégio Pedro II
Ano
2010
Provas
Disciplina
Algoritmos e Estrutura de Dados
Assuntos

A maneira mais óbvia de fazer uma busca é comparar o elemento que se está procurando com todos os elementos guardados um a um, isto é, procurar o elemento sequencialmente até que ele seja encontrado. Sobre a busca sequencial, analise as assertivas e, em seguida, assinale a alternativa que apresenta a(s) correta(s).

I. O algoritmo que realiza essa busca é realmente muito simples e consiste em uma estrutura de repetição que “varre” toda a sequência de elementos, realizando uma condicional que compara o elemento desejado com os elementos existentes na sequência.

II. A execução da rotina de busca termina somente quando a condição de busca é satisfeita.

III. A busca sequencial é indicada para pesquisa numa lista ordenada.


Alternativas
Comentários
  • II: ERRADO. A execução da rotina de busca termina quando a condição de busca é satisfeita, ou então quando todo o conjunto é percorrido e o elemento não foi encontrado.

    III. ERRADO. A busca binária é indicada para pesquisa numa lista ordenada.

    Obs: Normalmente a operação de busca mais apropriada em uma lista ordenada é a busca Binária;


ID
1003570
Banca
AOCP
Órgão
Colégio Pedro II
Ano
2010
Provas
Disciplina
Algoritmos e Estrutura de Dados
Assuntos

Uma cadeia corresponde a uma sequência de elementos denominados caracteres. Considera-se “padrão” o texto que se deseja encontrar e “texto” a origem, o local a buscar o padrão desejado. Sobre algoritmos de pesquisa em cadeia de caracteres, assinale a alternativa INCORRETA.

Alternativas

ID
1015969
Banca
Marinha
Órgão
CAP
Ano
2011
Provas
Disciplina
Algoritmos e Estrutura de Dados
Assuntos

Segundo HARRY FARRER (1999) , um algoritmo é considerado completo se os seus comandos forem de entendimento do seu destinatário. Em um algoritmo, um comando que não for do entendimento do destinatário terá que ser desdobrado. Esta definição é relativa a que técnica de construção de algoritmos?

Alternativas
Comentários
  • B) Refinamentos Sucessivos.

  • "Se um único comando não for compreendido, deve ser refinado sucessivamente quantas vezes for preciso até se tornar um algoritmo completo".

  • B) Refinamentos Sucessivos..


ID
1022194
Banca
IBFC
Órgão
PC-RJ
Ano
2013
Provas
Disciplina
Algoritmos e Estrutura de Dados
Assuntos

Marque a opção que determina uma lista de procedimentos bem definida, que pega algum valor, ou conjunto de valores como entrada, e produz algum valor ou conjunto de valores como saída.

Alternativas
Comentários
  • Item a)

    Um algoritmo é um procedimento computacional definido que recebe um ou mais valores(entrada) e produz um ou mais valores (saída).
  • O algoritmo é o esqueleto lógico estruturado para ao qual é aplicado para receber entradas alterar o estado destas e gerar uma saída.

  • a)Algoritmo.

    algoritmos necessitam um compilador para transcrever algoritmos para linguagem do computador && um interpretador, o qual interpreta cada comando do programa. Os algortimos podem ser representados das seguintes formas:

    descrição narrativa: passos para fazer algo

    fluxograma - visualização grafica dos procedimentos por meio de formas geometricas && setas

    pseudocodigo, portugol ou linguagem estruturada- uma representação mais fiel do algoritmos por convnções que se baseiam em linguagens reais. 

     

  • um software é apenas a representação de um algoritmo. Claro que é um algoritmo bastante complexo que exige um conjunto de recursos e ferramentas computacionais, mas –no fim das contas –é apenas um algoritmo.

    Fonte: estratégia

    GAB:A

  • Força Guerreiro!!!!!!


ID
1035352
Banca
CESPE / CEBRASPE
Órgão
PEFOCE
Ano
2012
Provas
Disciplina
Algoritmos e Estrutura de Dados
Assuntos

Acerca de funções, procedimentos e estruturas de controle de fluxo, julgue os próximos itens.

Em C, a sentença for é composta de três expressões, avaliadas em momentos diferentes da execução do laço. A primeira expressão é avaliada a cada vez que se executa o corpo do laço e, se a segunda expressão estiver ausente, esta será considerada verdadeira, tendo-se, assim, potencialmente um laço infinito.

Alternativas
Comentários
  • Sintaxe

                for (<inicialização>; <condição>; <incremento>) <comandos>

    A ausência da segunda expressão <condição> não há a execução do loop.
    Sendo os 3 argumentos necessários para executar

  • "A primeira expressão é avaliada a cada vez que se executa o corpo do laço ..." Errado!

    É a inicialização da variável.

  • Força Guerreiro!!!!!!


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

Acerca de lógica de programação, algoritmos, tipos de dados e variáveis, julgue os itens a seguir.


Algoritmos podem ser entendidos como uma sequência de procedimentos que transformam valores de entrada em valores de saída. O denominado problema do caixeiro viajante é considerado um algoritmo eficiente.

Alternativas
Comentários
  • uma sequência de procedimentos que transformam valores de entrada em valores de saída. --> PROCESSAMENTO DE DADOS

  • Na verdade, são dois os erros:

    1) Afirmar que o problema em si é um algoritmo. Na verdade, é um problema para o qual foram (e continuam sendo) desenvolvidos algoritmos;

    2) Deixar implícito que existe algoritmo eficiente para o problema (caixeiro viajante é NP-difícil).

  • Força Guerreiro!!!!!!


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

Acerca de funções, estruturas e operadores de lógica de programação, julgue os itens subsequentes.


Em um programa que consiste de vários blocos de comando, variáveis declaradas com nomes iguais em diferentes blocos podem gerar erros de execução, visto que não será possível resolver a variável e sua declaração.

Alternativas
Comentários
  • Interpretei a questão de forma diferente. As variáveis de mesmo nome, em diferentes blocos de comando, poderiam estar exercendo o conceito de polimorfismos por meio de sobreposição ou sobrecarga, o que não geraria, necessariamente um erro.

    Mas concordo com o colega, o erro, caso ocorra, será de compilação e não de execução.
  • Interpretei como o bloco, sendo que as variáveis entre os blocos são locais e tem escopo do mesmo. Dessa forma, não ocorreria erro caso fosse declarada com o mesmo nome em outro.

    Como exemplo, digamos que o método seja o bloco:

    public void teste() {

    int x;

    }

    A variável x é uma varável local com escopo de método (entre as chaves)!
    Ou seja, caso eu tente imprimir o conteúdo de x após o bloco, teremos um erro, pois a mesma limita-se as chaves.
    Assim, eu poderia criar quantos "is" eu quisesse em diferentes blocos!






  • ERRADO!

    Não é necessário bater cabeça na questão, erros de resolução de variáveis (escopo) são tratados pelo compilador em tempo de compilação.



  • Força Guerreiro!!!!!!


ID
1055893
Banca
CESPE / CEBRASPE
Órgão
STF
Ano
2013
Provas
Disciplina
Algoritmos e Estrutura de Dados
Assuntos

Em relação aos conceitos de programação orientada a objetos e lógica de programação, julgue os itens subsequentes.

O resultado abaixo será obtido ao se executar o algoritmo que a ele se segue.

Resultado:

1 0;
0 0;
2 1;
1 0;
3 2;
2 2;

Algoritmo:

program p;
var v: inteiro;
funcao f(v: inteiro; var k:inteiro): inteiro;
var p,q:inteiro;
inicio
se v < 2
então inicio
f := v;
k := 0;
fim
senão inicio
f := f(v-1, p) + f(v-2, q);
k := p + q + 1;
fim;
escreva(n,' ',k,'; ');
fim ;
inicio
n := 4;
escreva(f(3,n),n);
fim

Alternativas
Comentários
  • Eu marquei errado. Acertei na intuição, tentei fazer o caminho do algoritmo na mão. Mas não consegui entender direito algumas partes. Acredito que esteja me confundindo na ideia de passagem de parâmetros por valor e por referência. Alguém posta o resultado correto?

     

    =)

  • Marquei errado logo de cara quando vi a linha "se v < 2", sendo q v é null.... daria exceção... ao meu entender.. será que estou certo?

  • f(v,k) -> é chamada em escreva (f(3,n),n) -> f(3,n) ou Seja, o valor de v = 3 e k = n.

  • Marquei errado, pois não aparece no algoritmo a declaração da variável "n" o que da erro de sintaxe.

  • marquei errado, pois pelo que entendi não existe atribuição de valor à variável p e a variável q para poder verificar a função. 

  • A questão tem vários erros, pelo que me parece. As variáveis não estão bem declaradas, o programa não é devidamente carregado e não há nenhum loop para a execução com repetição do código.

  • Começando pelo início da função

    inicio
               n := 4;
               escreva(f(3,n),n);
    fim

    Vê-se que no final ele deveria imprimir: "resultado de f(3,n)" e "4"

    E na última linha do resultado tem o valor 2

  • Força Guerreiro!!!!!!


ID
1095817
Banca
IDECAN
Órgão
Banestes
Ano
2012
Provas
Disciplina
Algoritmos e Estrutura de Dados
Assuntos

Sabendo que o algoritmo pode ser considerado como uma sequência de ações executáveis para obtenção de uma solução para um determinado tipo de problema e que pode ser mensurado para se obter um tempo de execução em relação a algumas variáveis, marque os 3 cenários apresentados pelo tempo de execução de um algoritmo.

Alternativas
Comentários
  • Esta questão que não está categorizada corresponde a Algorítimo

  • A questão corresponde a área de Projeto e análise de algoritmos

  • e-

    algo____________best___________average___________worst

    Quicksort  Ω(n log(n))___________  Θ(n log(n))___________  O(n^2)  

    Mergesort  Ω(n log(n)) ___________ Θ(n log(n)) ___________ O(n log(n))  

    Timsort  Ω(n) ___________ Θ(n log(n)) ___________ O(n log(n))  

    Heapsort  Ω(n log(n))___________  Θ(n log(n)) ___________ O(n log(n))

    Bubble Sort  Ω(n) ___________ Θ(n^2) ___________ O(n^2)

    Insertion Sort  Ω(n) ___________ Θ(n^2) ___________ O(n^2)

    Selection Sort  Ω(n^2) ___________ Θ(n^2) ___________ O(n^2)

    Tree Sort  Ω(n log(n)) ___________ Θ(n log(n)) ___________ O(n^2)

    Shell Sort  Ω(n log(n)) ___________ Θ(n(log(n))^2) ___________ O(n(log(n))^2)

    Bucket Sort  Ω(n+k) ___________ Θ(n+k) ___________ O(n^2)

    Radix Sort  Ω(nk) ___________ Θ(nk) ___________ O(nk)

    Counting Sort  Ω(n+k) ___________ Θ(n+k) ___________ O(n+k)

    Cubesort  Ω(n)  ___________Θ(n log(n)) ___________ O(n log(n))  

  • Força Guerreiro!!!!!!


ID
1101319
Banca
UNIRIO
Órgão
UNIRIO
Ano
2012
Provas
Disciplina
Algoritmos e Estrutura de Dados
Assuntos

Em um algoritmo, apresentado o seguinte código:

"Se Condição1 então
Se Condição2 então
Comando1
Senão
Comando2
Comando3"

Quando a Condição1 for verdadeira, a próxima instrução a ser executada será :

Alternativas
Comentários
  • "Se Condição1 então // Primeira condição ser executada

        Se Condição2 então // Segunda condição a ser executada

            Comando1  

    Senão // Terceira condição a ser executada

       Comando2

    Comando3"

  • Força Guerreiro!!!!!!


ID
1101322
Banca
UNIRIO
Órgão
UNIRIO
Ano
2012
Provas
Disciplina
Algoritmos e Estrutura de Dados
Assuntos

Independente da linguagem de programação, ao passar um parâmetro por referência em uma função, toda a alteração feita .

Alternativas
Comentários
  • Um parâmetro formal é uma variável vazia listada no cabeçalho do subprograma e utilizada no subprograma.

  • Força Guerreiro!!!!!!


ID
1112908
Banca
FCC
Órgão
AL-PE
Ano
2014
Provas
Disciplina
Algoritmos e Estrutura de Dados
Assuntos

var
x, y, i: inteiro
result: real

inicio
leia (x)
leia (y)
result ←1

se (y > 0)
entao inicio

para i←1 ate y passo 1 faça
inicio
result ← result * x
fim para
fim entao
senao inicio

y ← y * (-1)
para i←1 ate y passo 1 faça
inicio
result ← result * (1/x)
fim para
fim senao

imprima (result)
fim

Considerando o algoritmo apresentado é correto afirmar que se;

Alternativas
Comentários
  • Tem que prestar atenção no alinhamento.


    se (y > 0) entao inicio 

                 para i←1 ate y passo 1 faça 
                 inicio 
                 result ← result * x 
                 fim para 
    fim entao 
    senao inicio 

    y ← y * (-1) 
                 para i←1 ate y passo 1 faça inicio 
                 result ← result * (1/x) 
                 fim para 
    fim senao 

    imprima (result) 
    fim


    Fica mais fácil assim ....



    []'s

  • Força Guerreiro!!!!!!


ID
1112911
Banca
FCC
Órgão
AL-PE
Ano
2014
Provas
Disciplina
Algoritmos e Estrutura de Dados
Assuntos

var
x, y, i: inteiro
result: real

inicio
leia (x)
leia (y)
result ←1

se (y > 0)
entao inicio

para i←1 ate y passo 1 faça
inicio
result ← result * x
fim para
fim entao
senao inicio

y ← y * (-1)
para i←1 ate y passo 1 faça
inicio
result ← result * (1/x)
fim para
fim senao

imprima (result)
fim

No algoritmo apresentado

Alternativas
Comentários
  • A alternativa b é verdadeira, pois a expressão y=y.(-1) será aplicada somente se a condição de y>0 não for assumida. Logo o resultado será o módulo de y ou zero.

  • Força Guerreiro!!!!!!


ID
1117546
Banca
CESGRANRIO
Órgão
FINEP
Ano
2014
Provas
Disciplina
Algoritmos e Estrutura de Dados
Assuntos

Uma linguagem de programação permite que os parâmetros de uma função sejam passados por valor ou por referência. Suponha que nessa linguagem seja definida uma função F(A,B) onde A e B são os parâmetros formais, sendo que A é passado por valor, e B é passado por referência. Durante a execução de F, somamos 2 ao valor de A e subtraímos 2 do valor de B.
Caso F(X,Y) seja uma chamada da função, ao longo do programa, onde os parâmetros reais X e Y são variáveis cujos valores antes da chamada são, respectivamente, 10 e 20, esperamos que, ao terminar a função, os novos va- lores de X e Y sejam, respectivamente,

Alternativas
Comentários
  • Passagens por referência indicam que esses parâmetros PODEM ser modificados dentro da função, ou seja, alterações que esses parâmetros sofrerem serão sentidas FORA da função, que correspondem aos efeitos colaterais que NÃO OCORREM quando os parâmetros são passados por valor .


    Fonte: http://www.ime.usp.br/~elo/IntroducaoComputacao/Funcoes%20passagem%20de%20parametros.htm


    Ou seja, quando a passagem é por referência o resultado é sempre alterado, quando a passagem é por valor ele só é alterado dentro da função.

  • Força Guerreiro!!!!!!


ID
1120924
Banca
CESPE / CEBRASPE
Órgão
TRT - 17ª Região (ES)
Ano
2013
Provas
Disciplina
Algoritmos e Estrutura de Dados
Assuntos

Acerca de construção de algoritmos, avaliação de expressões, variáveis e constantes, julgue os itens a seguir.

O algoritmo apresentado abaixo imprimirá a soma dos termos da sequência {1, 1/2, 1/3, ..., 1/20}.
início

CONTADOR, SOMA: numérico

SOMA ← 0

para CONTADOR de 1 até 20 faça

SOMA ← CONTADOR + (1/CONTADOR)

fim-para

escreva “O total da sequência é”, SOMA

fim

Alternativas
Comentários
  • CONTADOR, SOMA: numérico
    SOMA ← 0
    para CONTADOR de 1 até 20 faça
    SOMA ← CONTADOR + (1/CONTADOR) ----------- > loop1-----> soma = 1 + 1/1 = 2
    fim-para
    escreva “O total da sequência é”, SOMA ------------- > escreva (2)
    fim

    O algoritmo apresentado abaixo imprimirá a soma dos termos da sequência {1, 1/2, 1/3, ..., 1/20}.

    Gabarito: E

    O primeiro termo da sequência é o número 2.

     

  • A cada iteração ele vai somar "contador + 1/contador", então o algoritmo irá imprimir a soma { 1 + 1/1, 2 + 1/2, 3 + 1/3 , ..., 20 + 1/20}.

  • Complementando, a variável SOMA deverá ser declarada como real.

  • Força Guerreiro!!!!!!


ID
1120927
Banca
CESPE / CEBRASPE
Órgão
TRT - 17ª Região (ES)
Ano
2013
Provas
Disciplina
Algoritmos e Estrutura de Dados
Assuntos

Acerca de construção de algoritmos, avaliação de expressões, variáveis e constantes, julgue os itens a seguir.

Para representar a idade e o registro geral de identificação de uma pessoa, bem como se ela é ou não maior de idade, utiliza-se constante numérica.

Alternativas
Comentários
  • ERRADA

    Para representar a idade e o registro geral de identificação de uma pessoa, bem como se ela é ou não maior de idade, utiliza-se constante numérica.

  • Força Guerreiro!!!!!!


ID
1151050
Banca
FUMARC
Órgão
AL-MG
Ano
2014
Provas
Disciplina
Algoritmos e Estrutura de Dados
Assuntos

Em relação aos comandos em pseudocódigo correspondentes às estruturas de decisão e repetição dos algoritmos, correlacione as colunas a seguir:

Comando (pseudocódigo)                          Estrutura de decisão/repetição

I. Se...então                                    ( ) Estrutura de repetição com teste no final
II. Escolha...Caso                            ( ) Estrutura de seleção simples
III. Repita...Até                               ( ) Estrutura de repetição com variável de controle
IV. Para...Até...Faça                       ( ) Estrutura de seleção de múltipla escolha

A sequência CORRETA, de cima para baixo, é:

Alternativas
Comentários
  • Claramente o gabarito C.

  • Força Guerreiro!!!!!!


ID
1158214
Banca
FAFIPA
Órgão
UFFS
Ano
2014
Provas
Disciplina
Algoritmos e Estrutura de Dados
Assuntos

Os dados armazenados na memória CACHE devem ser substituídos periodicamente, essas substituições obedecem a alguns algoritmos. O objetivo desses algoritmos é aumentar o número de acertos, evitando as falhas na busca de novas instruções para o processador. Assinale a que NÃO corresponde a um algoritmo de substituição de dados:

Alternativas
Comentários
  • Força Guerreiro!!!!!!


ID
1211389
Banca
CESPE / CEBRASPE
Órgão
TJ-SE
Ano
2014
Provas
Disciplina
Algoritmos e Estrutura de Dados
Assuntos

1. Inicio programa
2. Ler salario
3. Se salario >=1000
4. Então
5.         salarionovo = salario * 1,05
6. Senão
7.         salario = salario * 1,075
8. Fim Se
9. Exibir salario
10.   Exibir salarionovo
11.   Fim programa


Considerando a algoritmo apresentado acima, julgue os itens seguintes acerca de lógica de linguagens de programação.

O comando na linha 7 faz aumentar o valor da variável salario em 75%. Esse comando, contudo, não poderá ser implementado da forma apresentada, uma vez que não é possível atribuir valor à variável salario, pois ela já está sendo utilizada no cálculo.

Alternativas
Comentários
  • Erro 1: "salario = salario * 1,075" significa aumentar o valor da variável salário em 7,5% (e não 75%);
    Erro 2: É perfeitamente possível implementar o cálculo apresentado.

  • Força Guerreiro!!!!!!


ID
1211392
Banca
CESPE / CEBRASPE
Órgão
TJ-SE
Ano
2014
Provas
Disciplina
Algoritmos e Estrutura de Dados
Assuntos

1. Inicio programa
2. Ler salario
3. Se salario >=1000
4. Então
5.         salarionovo = salario * 1,05
6. Senão
7.         salario = salario * 1,075
8. Fim Se
9. Exibir salario
10.   Exibir salarionovo
11.   Fim programa


Considerando a algoritmo apresentado acima, julgue os itens seguintes acerca de lógica de linguagens de programação.

Caso a linha 5 fosse salarionovo = salario * * 2, o valor da variável salario seria multiplicado por 2 duas vezes, tal que, se o valor da variável salario fosse 1000, então o valor de salarionovo seria 4000.

Alternativas
Comentários
  • 1º - A variável salario não tem nada a ver com salarionovo, se esta "multiplicação" (salario **2) estivesse correta o valor da variável salario não iria se modificar, mas sim salarionovo;

    2º - Para se multiplicar em java (e acredito que em nenhuma linguagem...) não se utiliza os dois asteriscos (**), utiliza-se apenas um (salarionovo = salario *2). Essa linha iria atribuir à variável salarionovo o valor da variável salario multiplicado por 2.
  • Força Guerreiro!!!!!!


ID
1211395
Banca
CESPE / CEBRASPE
Órgão
TJ-SE
Ano
2014
Provas
Disciplina
Algoritmos e Estrutura de Dados
Assuntos

1. Inicio programa
2. Ler salario
3. Se salario >=1000
4. Então
5.         salarionovo = salario * 1,05
6. Senão
7.         salario = salario * 1,075
8. Fim Se
9. Exibir salario
10.   Exibir salarionovo
11.   Fim programa


Considerando a algoritmo apresentado acima, julgue os itens seguintes acerca de lógica de linguagens de programação.

Para qualquer salario que for maior que 1000, o valor final de salario será acrescido em 50% de seu valor anterior.

Alternativas
Comentários
  • Errado.

    Será acrescido em 5% de seu valor anterior. Para que fosse 50%, a linha 5 deveria multiplicar por 1,5

  • Na verdade, Fernando, a variável salario será acrescida de 7,5% (ver linha 7). A linha 5 acrescenta 5% à variável salarionovo.

    Observe que a banca diz "... o valor final de salario será acrescido em 50% de seu valor anterior." 
    De qualquer forma a questão está errada.
  • Na verdade, para qualquer salário maior que 1000 o valor do salário não será incrementado, pois a opção que altera a variável salario só é executada caso a primeira condição seja falsa (3. Se salario >=1000).

    Não sei se foi intencional esse joguinho de variáveis, pois é meio estranho a lógica de incrementar uma variável ou outra. No mínimo escolha inadequada de nomes de variáveis. Apesar de que não influencia em nada na resposta, pois em nenhum dos casos ha um acrescimo de 50% (*1,5). O lance é mais matemática básica do que algoritmo ou programação.

  • Força Guerreiro!!!!!!


ID
1212616
Banca
CESGRANRIO
Órgão
CEFET-RJ
Ano
2014
Provas
Disciplina
Algoritmos e Estrutura de Dados
Assuntos

Beto, estudante de programação, ao resolver um problema, testou diversos algoritmos e, com um deles, achou a seguinte impressão com o resultado correto:

soma = 39.

Esse resultado foi entregue ao professor. Indagado sobre com qual algoritmo tinha encontrado o resultado correto, Beto percebeu que não mais lembrava. E teve que repetir as experiências.

Qual foi o algoritmo utilizado pelo estudante?

Alternativas
Comentários
  • enquanto a chave for menor que o número 18 deve-se fazer as seguintes contas:

    soma = soma + chave
    chave= chave + 3


    S=0
    C=10

    1° 
    SOMA= 0+10= 10.
    agora soma ta valendo 10

    CHAVE= 10+3= 13
    agora chave ta valendo 13

    como a chave (13) continua menor que 18 a conta continua

    S=10
    C=13

    2° 

    SOMA= 10+13= 23
    CHAVE= 13+3= 16

    a chave continua menor que 18 a conta continua

    S=23
    C=16

    SOMA= 23+16= 39
    CHAVE= 16+3= 19


    como a chave é maior que 18 fim da conta a soma é igual 39 chegamos ao resultado

    gabarito letra A
     

  • Força Guerreiro!!!!!!