Você está na página 1de 92

Aula 04

Conhecimentos de Informática p/ ATA-MF


Professores: Alexandre Lênin, Junior Martins
Noções de Informática – ATA/MF
Teoria e questões comentadas
Prof. Lênin e Júnior – Aula 4

LÓGICA E ESTRUTURA DE PROGRAMAÇÃO

SUMÁRIO
1. Apresentação ................................................................................................................................. 2

2. Lógica e Estrutura de Programação ................................................................................................... 2

3. Questões Comentadas. .................................................................................................................. 45

4. Lista das Questões Utilizadas na Aula. ............................................................................................. 76

5. Gabarito. ..................................................................................................................................... 91

07409679409

Prof. Lênin e Júnior www.estrategiaconcursos.com.br 1/91


Noções de Informática – ATA/MF
Teoria e questões comentadas
Prof. Lênin e Júnior – Aula 4

1. APRESENTAÇÃO

Olá, pessoal,

Hoje teremos uma aula sobre conhecimentos básicos de programação,


voltado para a lógica, certo? Então, é um tópico novo para quem não é da
área específica de informática, mas procuramos criar uma aula que atenda
a todos os alunos, inclusive quem nunca ouviu falar disso.

Os exercícios, em alguns casos, são mais demorados para resolver e


exigem concentração. Por isso, na hora de exercitar, concentre-se e saiba
que resolver algoritmos pode exigir um pouco mais de tempo. Não se
apresse, pois é fácil errar a resposta.

Sem mais delongas, vamos que vamos.

Boa aula,

Lênin e Júnior

2. LÓGICA E ESTRUTURA DE PROGRAMAÇÃO

A linguagem estruturada ou programação estruturada é uma forma de


escrita de programas para computadores, que possibilita a criação de
estruturas simples usando os recursos de sub-rotinas ou funções. Os
algoritmos são estabelecidos como ferramenta de desenvolvimento para
as linguagens estruturadas, pois, através dos mecanismos básicos
oferecidos, podem ser usados para facilitar a compreensão da solução
descrita, independentemente da sua complexidade e da linguagem de
programação a ser usada para a sua criação.
07409679409

As linguagens estruturadas surgiram na década de 70 e são consideradas


de 3ª geração, dentre as principais posso citar a PL/1, Fortran, Algol 68,
Cobol, Clipper, Linguagem C, Pascal (muito utilizada na minha época de
faculdade para o aprendizado da arte de programar), Visual Basic e
Delphi.

O princípio básico de programação estruturada é que um programa é


composto por blocos elementares de código que se interligam através de
três mecanismos básicos, que são sequência, seleção e iteração. Cada
uma destas construções tem um ponto de início (o topo do bloco) e um
ponto de término (o fim do bloco) de execução.

Prof. Lênin e Júnior www.estrategiaconcursos.com.br 2/91


Noções de Informática – ATA/MF
Teoria e questões comentadas
Prof. Lênin e Júnior – Aula 4

Daqui em diante vamos conhecer todos os principais conceitos da


linguagem estruturada usando como meio o Algoritmo. Mãos à obra
turma!

ALGORITMOS

Segundo o dicionário Aurélio, lógica é a “coerência de raciocínio, de


ideias”, ou ainda a “sequência coerente, regular e necessária de
acontecimentos, de coisas”. Ainda segundo Aurélio, algoritmos é
“processo de cálculo, ou de resolução de um grupo de problemas
semelhantes, em que se estipula, com generalidade e sem restrições,
regras formais para a obtenção do resultado ou da solução do problema”.

Segundo o prisma da computação, um algoritmo é uma sequência


finita de passos (ou instruções), descritos em uma ordem lógica,
que visam atingir um objetivo bem definido. As instruções devem
ser bem definidas e não ambíguas, bem como o tempo e o esforço para
executar as instruções devem ser finitos. Muitas vezes pensamos em
algoritmos como programas de computador, mas não são. Algoritmos são
sequências de instruções para realizar uma tarefa, não necessariamente a
serem implementadas em uma linguagem de programação.

De outro lado, um programa de computador, segundo Wirth, “é um


formulação concreta de algoritmos abstratos, baseados em
representações e estruturas específicas de dados”. Isto é um programa é
o resultado de algoritmos + estrutura de dados.

A Lógica de programação pode ser definida como o estudo das leis do


raciocínio e do modo de aplicá-las corretamente na demonstração da
verdade. Chamamos de algoritmo lógico aquele algoritmo cujas instruções
estão dispostas ordenadamente e de maneira compreensível por qualquer
pessoa que possua conhecimento básico sobre o assunto. Isto é, um
07409679409

algoritmo deve ser facilmente entendido, sem que seja necessária uma
grande perda de tempo para a tradução da idéia contida no mesmo. Um
algoritmo lógico deve ser, também, formado apenas pelo número mínimo
de instruções necessárias para a resolução do problema referido.

Um algoritmo opera sobre um conjunto de entradas de modo a gerar uma


saída que seja útil para o usuário. Um algoritmo tem cinco características
importantes:

FINITUDE

Um algoritmo deve sempre terminar após um número finito de passos.

Prof. Lênin e Júnior www.estrategiaconcursos.com.br 3/91


Noções de Informática – ATA/MF
Teoria e questões comentadas
Prof. Lênin e Júnior – Aula 4

 Definição: Cada passo de um algoritmo deve ser precisamente


definido. As ações devem ser definidas rigorosamente e sem
ambiguidades.
 Entradas: Um algoritmo deve ter zero ou mais entradas, isto é
quantidades que são lhe são fornecidas antes do algoritmo iniciar.
 Saídas: Um algoritmo deve ter uma ou mais saídas, isto é
quantidades que tem uma relação específica com as entradas.
 Efetividade: Um algoritmo deve ser efetivo. Isto significa que todas
as operações devem ser suficientemente básicas de modo que
possam ser em princípio executadas com precisão em um tempo
finito por um humano usando papel e lápis.

Neste curso utilizaremos o português estruturado para representar


algoritmos.

Identificador

É um nome criado pelo desenvolvedor de algoritmos para


identificar/distinguir os elementos de um algoritmo. Sua construção é dada
pelo diagrama a seguir:

identificador letra

letra
07409679409

dígito

Os identificadores devem iniciar por uma letra (26 letras do alfabeto),


seguida de uma quantidade qualquer – zero ou mais – de letras (a..z) e/ou
dígitos (0 a 9). Não é permitido utilizar os caracteres especiais (entre eles o
espaço). Algumas linguagens de programação (e autores) aceitam outros
caracteres como válidos (como o símbolo de sublinha “_”).

Prof. Lênin e Júnior www.estrategiaconcursos.com.br 4/91


Noções de Informática – ATA/MF
Teoria e questões comentadas
Prof. Lênin e Júnior – Aula 4

Tipos de Dados

Os algoritmos utilizam os comandos para manipular dados. Estes dados


ou fazem parte do algoritmo ou serão obtidos pelo algoritmo para realizar
as operações necessárias. É importante perceber que os dados serão
armazenados na memória da máquina, ou na porção de memória
reservada ao código do programa (instruções) – quando fazem parte delas
– ou em área reservada para armazenamento de dados que podem ser
modificados. Naturalmente somos levados a pensar que os dados são de
tipos diferentes, mas nem sempre nos atentamos para as particularidades
de cada tipo. Sabemos que na vida real existem os nomes, os números,
as respostas sim e não e outros tipos de representação da informação.
Quando falamos em máquinas, o armazenamento é uma questão
importante.

Os dados em memória são representados de formas diferentes


dependendo do que se quer representar e de quais operações poderão ser
realizadas. No caso dos caracteres, a representação é por meio de 1 byte
para cada caractere representado, de forma que o byte é um número da
tabela ASCII (American Code for Interchance Information) associado ao
caractere. Por exemplo, o número 65 representa o “A”, o 66 o “B”, o 32 é
o espaço em branco, o 7 é o bip (som) e assim por diante. Quando
falamos em representar cadeias de caracteres, então é preciso
dimensionar a quantidade de caracteres da cadeia e será consumido um
byte para representar cada elemento. Se a questão é armazenar apenas
respostas sim e não, um bit é suficiente, apesar de que a menor unidade
para alocação é um byte. Se o caso é o armazenamento de um número,
então a quantidade de bytes do número terá relação com a grandeza do
mesmo. Note que existe grande diferença entre armazenar um número
07409679409

inteiro e armazenar um número real. O inteiro é uma sequência de bytes


interpretada como um todo. Já o número real é representado por um
número em notação científica, sendo composto por um grupo de bytes
dividido em duas partes, uma representa a mantissa e a outra o expoente.
Isto permite armazenar um número muito grande, mas com pouca
precisão numérica. Veja:

3,14 x 1020 314 é a mantissa e 1020 o expoente. Assim precisaríamos


de 2 bytes para representar a mantissa e 1 byte para representar o
expoente.

Prof. Lênin e Júnior www.estrategiaconcursos.com.br 5/91


Noções de Informática – ATA/MF
Teoria e questões comentadas
Prof. Lênin e Júnior – Aula 4

Fiz este resumo sobre as diferentes representações de dados em memória


para justificar a necessidade de definir tipos de dados. Enquanto para os
humanos isto pode ser indiferente (gastará a mesma quantidade de
papel), para os computadores significa espaços de armazenamento
diferentes, modos de operação diferentes, valores diferentes. O mesmo
grupo de bytes, se lido como inteiro representa um número diferente do
que se for lido como um número real.

Por isso, as linguagens de programação normalmente estabelecem regras


precisas para definir que tipos de dados elas irão manipular. Já os
algoritmos procuram abstrair-se destes detalhes, mas estabelecem
algumas regras que limitam o conjunto de dados existentes na natureza e
que poderão ser manipulados pelos algoritmos. Existem três tipos básicos
de dados que a linguagem irá manipular: dados numéricos (inteiros e
reais), dados alfanuméricos e dados Lógicos

Lembre-se de que os números reais possuem limitação para a


representação no computador. As linguagens limitam o número de casas
decimais e a quantidade de dígitos significativos. Além disso, como o
computador utiliza o sistema binário internamente, existem problemas de
perda de dígitos significativos no processo de conversão decimal 
binário. Por exemplo, o número real 0.6 ao ser convertido para a base
dois gera uma dízima periódica.

Os dados alfanuméricos servem para tratamento de textos e normalmente


são compostos por uma sequência de caracteres contendo letras,
algarismos e outros caracteres da tabela ASCII (normalmente caracteres
de pontuação). Nos algoritmos estes dados são representados por uma
sequência de caracteres entre aspas. Alguns autores e linguagens optam
pela representação delimitada por apóstrofes. Exemplo: “Ponto dos
Concursos” ou 'Ponto dos Concursos'.
07409679409

Já os dados Lógicos, também chamados de booleanos, somente podem


assumir dois valores: verdadeiro e falso. A representação internar
normalmente é feita por um byte do tipo inteiro, onde o valor zero
representa o falso e os demais valores o verdadeiro.

Estes três tipos de dados (numérico, alfa-numérico e lógico) são os


chamados tipos primitivos (simples). Existem outros tipos de dados,
chamados de tipos de dados compostos. Destaco, nesta categoria, os
vetores e as matrizes (ou arranjos). Os dados compostos são formados
por agrupamento de outros tipos de dados.

Prof. Lênin e Júnior www.estrategiaconcursos.com.br 6/91


Noções de Informática – ATA/MF
Teoria e questões comentadas
Prof. Lênin e Júnior – Aula 4

Constantes

Uma constante é um determinado valor que não se modifica ao longo do


tempo, durante a execução de um programa. É permitido associar um
nome (identificador) à constante para facilita a manutenção do código e
para dar maior clareza ao programa. Neste caso, é preciso declarar a
constante na sessão apropriada do algoritmo.

Variável

Corresponde a uma área de memória do computador, à qual atribuímos


um identificador. Esta área da memória armazena valores que podem
variar ao longo do tempo, durante a execução do programa.

No entanto, as variáveis só podem armazenar um valor por vez. Ao


executar um comando que envia um valor para uma variável, o valor que
já estiver armazenado será perdido. Além de possuir um identificador
(nome), cada variável deve estar associada a um tipo de dado. Note que
algumas linguagens não exigem nem a declaração nem a designação de
tipo para as variáveis, mas em algoritmos, tem-se mantido este padrão. A
forma de definir variáveis em um algoritmo é:

07409679409

Atribuição

O comando de atribuição armazena um valor em uma variável. O valor já


existente na variável é substituído pelo novo valor, uma vez que uma
variável só pode assumir um valor de cada vez. Não é possível recuperar
o valor alterado pelo comando de atribuição. O símbolo deste comando
(entendido como operador por alguns autores) é a seta para esqueda: .
Sua sintaxe é:

Prof. Lênin e Júnior www.estrategiaconcursos.com.br 7/91


Noções de Informática – ATA/MF
Teoria e questões comentadas
Prof. Lênin e Júnior – Aula 4

O novo valor atribuído à variável é feito durante o processamento do


programa utilizado e pode ser uma constante, o resultado de uma
expressão ou o valor de outra variável.

EXEMPLO:

X  30

NOTA  5.0 + 7.0

Observações Importantes

 a expressão que se encontra do lado direito da atribuição deve ser


compatível com o tipo de dado definido para a variável;

 na atribuição de variável inteira, a expressão deverá ser uma


expressão inteira;

 na atribuição de variáveis do tipo real, a expressão deverá ser


numérica, sem nenhuma outra restrição;

 na atribuição de variáveis caractere o valor deverá estar envolvido


por aspas. Ele não poderá ter um tamanho maior do que aquele
estabelecido para a variável. Se isto acontecer, o valor será
truncado.

 na atribuição de variáveis lógicas deveremos usar as palavras


07409679409

VERDADEIRO e FALSO, ou quando não houver risco de confusão,


podemos usar as abreviaturas V e F.

Operadores

Operadores são símbolos utilizados em expressões que contêm variáveis,


constantes e funções. De acordo com os tipos de dados das variáveis e o
resultado da operação, os operadores dividem-se em três tipos:
aritméticos, relacionais e lógicos.

Prof. Lênin e Júnior www.estrategiaconcursos.com.br 8/91


Noções de Informática – ATA/MF
Teoria e questões comentadas
Prof. Lênin e Júnior – Aula 4

ARITMÉTICOS: São aqueles que atuam apenas sobre constantes, variáveis


e funções numéricas, gerando um resultado numérico em uma expressão.
São eles:

+ Adição
- Subtração binária
* Multiplicação
/ Divisão
** ou ^ Exponenciação
- Menos unário

DIV E MOD

São duas importantes operações (entendidas também por funções)


matemáticas que atuam sobre números inteiros e dão como resultado
também números inteiros.

Y Div X - resultado inteiro de uma divisão inteira de Y por X

Y Mod X - resto inteiro de uma divisão inteira de Y por X

Operadores Relacionais

São aqueles que realizam uma comparação entre duas expressões e geram resultados
lógicos, isto é Verdadeiro ou Falso, são eles:

= 07409679409

Igual
<> ou  Diferente
> Maior que
< Menor que
>= ou  Maior ou igual
<= ou  Menor ou igual

Prof. Lênin e Júnior www.estrategiaconcursos.com.br 9/91


Noções de Informática – ATA/MF
Teoria e questões comentadas
Prof. Lênin e Júnior – Aula 4

Operadores Lógicos

São aqueles que geram resultados lógicos através da comparação entre


duas expressões lógicas, são três:

é aquele que exige que todos os termos da expressão


conjunção E sejam verdadeiros para que a expressão inteira seja
verdadeira.
é aquele que exige que apenas um dos termos da
disjunção OU expressão seja verdadeiro para que a expressão inteira
seja verdadeira.
é aquele que inverte ou nega o valor lógico de um
negação NÃO
elemento.

Os operadores lógicos tem seu resultado baseado na Tabela Verdade, eles


operam sobre variáveis lógicas (V ou F) e tem como resultado valores
lógicos (V ou F).

OU V F E V F NÃO V F
V V V V V F F V
F V F F F F

Prioridades

Na execução de um comando complexo, podemos encontrar duas ou mais


07409679409

operações numéricas uma ao lado da outra, e neste caso devemos seguir


regras de prioridades de operadores para sabermos qual será executado
primeiro. No Portugol as prioridades são:

PRIORIDADE COMANDO
1ª parêntesis
2ª funções
3ª menos unário
4ª ** ou ^

Prof. Lênin e Júnior www.estrategiaconcursos.com.br 10/91


Noções de Informática – ATA/MF
Teoria e questões comentadas
Prof. Lênin e Júnior – Aula 4

5ª *e/
6ª +e-
7ª relacionais
8ª lógicos NÃO
9ª E
10ª OU

Se houver duas operações de mesma prioridade, as operações serão


realizadas da esquerda para a direita.

ESTRUTURA DE UM ALGORITMO

A estrutura básica de um algoritmo é:

algoritmo

<declarações (variáveis, constantes, módulos)>

início

<comandos>

fim.

SEQUÊNCIA SIMPLES
07409679409

Trata-se de um grupo de comandos executados de forma sequencial. Os


comandos são executados de cima para baixo, sendo que o próximo
comando da lista só poderá ser executado após o término do comando
anterior. É comum delimitar os comandos de uma sequência simples pelas
palavras reservadas “INÍCIO” e “FIM”, formando assim um bloco de
comandos.

Prof. Lênin e Júnior www.estrategiaconcursos.com.br 11/91


Noções de Informática – ATA/MF
Teoria e questões comentadas
Prof. Lênin e Júnior – Aula 4

Exemplo: Calcular a área de um triângulo:

Algoritmo

Declare

B, H, AREA : real

inicio

leia (B) {base}

leia (H) {altura}

AREA  ( B * H ) / 2 {calcula a área}

escreva(AREA)

fim.
07409679409

COMANDOS DE ENTRADA E SAÍDA

A maioria dos algoritmos que escrevemos necessita receber dados


externos, e em algum momento necessitará comunicar respostas, para
tanto usamos os comandos de entrada e saída. Para a tarefa de buscar
valores externos ao algoritmo utilizamos o comando LEIA e para enviar
dados para a unidade de saída utilizamos o IMPRIMA ou ESCREVA.

A sintaxe destes comandos é:

Prof. Lênin e Júnior www.estrategiaconcursos.com.br 12/91


Noções de Informática – ATA/MF
Teoria e questões comentadas
Prof. Lênin e Júnior – Aula 4

Entrada de dados:

leia (<identificador 1>, <identificador 2>, ..., <identificador n>)

Saída de dados:

imprima (<identificador 1>, <identificador 2>, ..., <identificador n>)

imprima (<expressão numérica>)

ESTRUTURA CONDICIONAL SIMPLES

Na vida real tomamos decisões a todo o momento baseadas em uma


situação existente. Em um algoritmo, chamamos esta situação de
condição. Associada a uma condição, existirá uma alternativa possível de
ações. Exemplo: "se tiver R$ 10,00 sobrando então irei ao cinema hoje à
noite.”
07409679409

A condição nesta frase é "tiver R$ 10,00 sobrando". Ela é uma expressão


lógica, pois a pergunta "Tenho R$ 10,00 sobrando?" Pode (tem que) ser
respondida com "Sim" ou "Não". Lembre-se, então: em um algoritmo,
toda condição tem que ser uma expressão lógica, algo que possa-se
pensar como “ isto é VERDADEIRO” ou “isto é FALSO”. Se a condição for
verdadeira, a ação a ser executada é "irei ao cinema", se a resposta à
pergunta "Tenho dinheiro suficiente?" for "Sim". Então, em um algoritmo,
as ações são um ou mais comandos que serão realizados apenas se a
avaliação da condição resulta VERDADEIRO. Vamos colocar agora a frase
do exemplo anterior em outra forma, mais parecida com nosso Português
Estruturado:

Prof. Lênin e Júnior www.estrategiaconcursos.com.br 13/91


Noções de Informática – ATA/MF
Teoria e questões comentadas
Prof. Lênin e Júnior – Aula 4

se "tiver R$ 10,00 sobrando" então

"irei ao cinema"

fim-se

Veja que grifei três palavras: se, então e fim-se. Elas são muito
importantes na estrutura dos comandos de decisão. Como próximo passo,
vamos generalizar a estrutura que criamos acima:

se <condição> então

<ações a serem realizadas se a condição for verdadeira>

fim-se

Para terminar a nossa comparação, devemos lembrar que os comandos de


um algoritmo são sempre indispensáveis, e que o computador só lida com
quantidades definidas (ou seja, ele não sabe o que é "ter R$ 10,00
sobrando"). Para aproximar mais nossa frase de um algoritmo, poderemos
ter a seguinte forma:

se Dinheiro >= 10 então

Ir_ao_Cinema <- VERDADEIRO

Fim-se

07409679409

O exemplo acima poderia ser estendido para o caso do sujeito não ter
dinheiro sobrando: "se tiver R$ 10,00 sobrando irei ao cinema hoje à
noite, mas se não tiver ficarei vendo TV em casa". Neste caso, uma
codificação possível para esse algoritmo seria:

se Dinheiro >= 10 então

Ir_ao_Cinema <- VERDADEIRO

Ver_TV <- FALSO

Prof. Lênin e Júnior www.estrategiaconcursos.com.br 14/91


Noções de Informática – ATA/MF
Teoria e questões comentadas
Prof. Lênin e Júnior – Aula 4

Fim-se

se Dinheiro < 10 então

Ir_ao_Cinema <- FALSO

Ver_TV <- VERDADEIRO

Fim-se

É importante frisar que sempre à direita do comando se deverá parecer


uma expressão lógica, e uma expressão cujo resultado é VERDADEIRO
ou FALSO. Assim, os seguintes comandos são incorretos:

se A  B então // É uma atribuição e não uma expressão

...

Fim-se

Se A + B então // É uma expressão aritmética e não uma expressão

...

Fim-se

07409679409

Por outro lado, estão corretos os seguintes comandos:

se (A > B) e (A > C) e (B <> C) então

...

Fim-se

se não Achou então // Correto se Achou foi declarada como lógico

Prof. Lênin e Júnior www.estrategiaconcursos.com.br 15/91


Noções de Informática – ATA/MF
Teoria e questões comentadas
Prof. Lênin e Júnior – Aula 4

...

Fim-se

A sintaxe da estrutura condicional simples é:

Se <condição> então

<ação(ões)>

fim-se

Alguns autores preferem colocar o então na segunda linha. Isto não


modifica a estrutura nem a forma de execução.

Se <condição>

então <ação(ões)>

fim-se

07409679409

Prof. Lênin e Júnior www.estrategiaconcursos.com.br 16/91


Noções de Informática – ATA/MF
Teoria e questões comentadas
Prof. Lênin e Júnior – Aula 4

ESTRUTURA CONDICIONAL COMPOSTA

É uma extensão da alternativa simples, neste caso temos determinar o


que fazer se a condição for verdadeira, e o que fazer se a condição for
falsa. O formato deste comando é:

Se <condição>

então <ação 1>

senão <ação 2>

fim-se

Semântica: se a condição contida no comando SE for verdadeira são


executados os comandos internos ao ENTÃO, e os comandos internos ao
SENÃO são desprezados até encontrar o FIM-SE correspondente. Caso
contrário, se a condição contida no comando SE for falsa, os comandos
internos ao ENTÃO são desprezados e os comandos internos ao SENÃO
são executados até encontrar o FIM-SE correspondente.

Exemplo:

DELTA  4 * A * C - B ** 2

se DELTA < 0

senão X  DELTA ^ 0.5 07409679409

fim-se

Prof. Lênin e Júnior www.estrategiaconcursos.com.br 17/91


Noções de Informática – ATA/MF
Teoria e questões comentadas
Prof. Lênin e Júnior – Aula 4

ANINHAMENTO DE ESTRUTURAS

Os algoritmos podem ser formados por diversas estruturas, cada uma com
uma função específica. Existem casos em que uma estrutura poderá estar
dentro de outra, e a isto dá-se o nome de aninhamento. Nada impede que
exista uma condição dentro de outra, e isto também poderá ocorrer com
as próximas estruturas de comando.

Não existe um limite para o número de estruturas que podem ser


colocadas dentro de outra estrutura qualquer, mas se o número for muito
grande, a compreensão e a visualização serão prejudicadas. Para facilitar
07409679409

a compreensão e a visualização do início e do final de cada estrutura,


utiliza-se o artifício da identação.

Nos casos em que são necessárias muitas estruturas internas, a solução é


a utilização do processo de modularização do algoritmo, assunto que será
tratado na aula seguinte

Exemplo:

Prof. Lênin e Júnior www.estrategiaconcursos.com.br 18/91


Noções de Informática – ATA/MF
Teoria e questões comentadas
Prof. Lênin e Júnior – Aula 4

SEM IDENTAÇÃO COM IDENTAÇÃO

Se A <> 0 Se A <> 0

então B  0 então B  0

se C <> 0 se C <> 0

então D  0 então D  0

F3 F3

Fim-se; Fim-se

G  77 G  77

Fim-se; Fim-se

Uma regra importante, que deve ser sempre seguida, é a de que o início e
o final da estrutura mais interna devem ser sempre dentro da estrutura
imediata que a contém.

MÚLTIPLA ESCOLHA

Em algumas situações é necessário termos várias soluções ligadas a


respostas diferentes, neste caso o comando de alternativa simples ou
composta não é uma solução prática, isto porque obrigará o programador
07409679409

a escrever muitas linhas de programa, além de ter que criar vários


comandos de alternativas compostas e verificar a validade de suas
condições para que o comando execute o caminho correto para uma
determinada condição. Temos então o comando de alternativa de múltipla
escolha. O funcionamento deste comando obedece a seguinte regra:

caso <expressão>

valor1 : <comando1>

valor 2 :< comando2>

...

Prof. Lênin e Júnior www.estrategiaconcursos.com.br 19/91


Noções de Informática – ATA/MF
Teoria e questões comentadas
Prof. Lênin e Júnior – Aula 4

valor n : <comando n>

senão: <comando n+1>

fim-caso

Semântica:

 a expressão do CASO é avaliada, e deve gerar um resultado


determinado;

 este resultado é comparado com os valores indicados colocados do


lado esquerdo do dois pontos ( : );

 quando um valor igual for encontrado, o comando colocado ao lado


direito do dois pontos ( : ) será executado, retornando ao FIMCASO
correspondente, sem executar mais nenhuma comparação, onde
prossegue o fluxo normal do algoritmo;

 caso nenhum valor seja igual ao resultado obtido na expressão do


CASO o comando existente do lado direito do dois pontos ( : ) do
SENÃO será executado, retornando ao FIMCASO onde prossegue o
fluxo normal do algoritmo.

Esta estrutura também aparece na literatura com a forma:

escolha < expressão-de-seleção > 07409679409

caso < exp 1 > , < exp 2 >, ... , < exp n >

< lista-de-comandos-1 >

caso < exp 1 > , < exp 2 >, ... , < exp n >

< lista-de-comandos-2 >

outrocaso

< lista-de-comandos-3 >

Fim-escolha

Prof. Lênin e Júnior www.estrategiaconcursos.com.br 20/91


Noções de Informática – ATA/MF
Teoria e questões comentadas
Prof. Lênin e Júnior – Aula 4

TESTE DE MESA

Um algoritmo, depois de ser elaborado, pode (e deve) ser testado. Para


tal, utilizamos um método conhecido como teste de mesa. O teste de
mesa é como uma simulação de todos os passos, ou seja, entradas,
comandos e instruções do algoritmo, a fim de saber se ele chega ao
resultado a que se propõe e se a lógica está correta. Para tal, preenche-se
uma tabela com valores para as variáveis e segue-se o fluxo de execução
do algoritmo, simulando a execução de cada instrução, ou seja, refazendo
o que o computador faria ao executar cada instrução. A cada comando
simulado (executado), o valor das variáveis na tabela deve ser atualizado.
Se, para uma instrução executada, uma ou mais variáveis não ficaram
com os valores esperados, há um erro na lógica do algoritmo.

Algoritmo Teste de Mesa


Declare Variáveis Saída
a,b,c: REAL a b c
Inicio ? ? ?
a <- 5 5 ? ?
b <- 15 5 15 ?
c <- a+b 5 15 20
escreva (c) 5 15 20 20
a <- 10 10 15 20
b <- 25 10 25 20
c <- a+b 10 25 35
escreva (c) 10 25 35 35
a <- a-b (10-25)= -15 07409679409

25 35
escreva (a) -15 25 35 -15
a <- 0 0 25 35
b <- 0 0 0 35
c <- 0 0 0 0
Fim

Esta é uma sugestão. Você pode simplificá-la, escrevendo apenas as


variáveis e saídas. Economize tempo não escrevendo os comandos e
anotando apenas as alterações ocorridas nas variáveis. Quando algum
comando não efetuar alterações de valores nem uma saída, então não

Prof. Lênin e Júnior www.estrategiaconcursos.com.br 21/91


Noções de Informática – ATA/MF
Teoria e questões comentadas
Prof. Lênin e Júnior – Aula 4

precisará anotar. Isto resultará em ganho de tempo na construção do


teste.

ESTRUTURAS DE REPETIÇÃO

Para a solução de diversos problemas, as sequências simples e as


estruturas condicionais devem ser executadas diversas vezes. Em muitos
destes casos, as instruções para execução são as mesmas, alterando
apenas os valores das variáveis. Os comandos de repetição permitem o
reaproveitamento de instruções do algoritmo. Vejamos estas estruturas

ESTRUTURA DE REPETIÇÃO ENQUANTO

Na estrutura enquanto..faca, a expressão lógica é avaliada e, se ela for


verdadeira, a lista de comandos é executada. Isso se repete até que a
condição seja falsa. Veja a sua forma geral:

enquanto <expressão lógica> faça

<lista de comandos>

Fim-enquanto

Semântica - a condição (<expressão lógica>) entre o ENQUANTO e o


FAÇA é avaliada antes de executar qualquer comando interno à estrutura
(<lista de comandos>). Se a condição for verdadeira, os comandos são
07409679409

executados. Se for falsa todos os comandos internos ao ENQUANTO serão


desprezados e a repetição é encerrada, mesmo se não tiver executado os
comandos uma vez. Ao encontrar o “fim-enquanto”, a execução dos
comandos volta para a linha enquanto, analisando a expressão lógica
novamente.

Exemplo: Calcular a soma dos números inteiros até 100.

Algoritmo

Declare SOMA, NUM: inteiro

Prof. Lênin e Júnior www.estrategiaconcursos.com.br 22/91


Noções de Informática – ATA/MF
Teoria e questões comentadas
Prof. Lênin e Júnior – Aula 4

inicio

SOMA  0

NUM  0

enquanto NUM <= 100 faça

SOMA  SOMA + NUM

NUM  NUM + 1

Fim-enquanto

escreva(SOMA)

fim.

Cuidado com os laços (repetições) infinitos. Em algumas


construções, a condição da estrutura de repetição (condição de
interrupção) não resulta em valores que resultem em interrupção
da repetição. Nestes casos, o programa é executado para sempre. É o
costumeiro: TRAVOU!

07409679409

Prof. Lênin e Júnior www.estrategiaconcursos.com.br 23/91


Noções de Informática – ATA/MF
Teoria e questões comentadas
Prof. Lênin e Júnior – Aula 4

REPITA...ATÉ

Nessa estrutura, todos os comandos da lista são executados e uma


expressão lógica é avaliada. Isto se repete até que a avaliação da
condição resulte em FALSO, quanto então o próximo comando a ser
executado é o comando imediatamente após o ate. Cada repetição da lista
de comandos também é chamada de iteração e essa estrutura também é
chamada de laço de repetição. Sua forma geral é:

Sintaxe:

repita

<lista de comandos>

até <expressão lógica>

Semântica : os comandos internos ao REPITA são executados até que a


condição após o até seja avaliada com resultado VERDADEIRO. Se o
resultado da expressão lógica for FALSO, a lista de comandos será
executada novamente. Observe que a lista de comandos é executada
antes da avaliação da expressão. Desta forma, a lista é executa, no
mínimo, uma vez, independente da expressão lógica.

Exemplo: Algoritmo que escreve os números de 1 a 10.

07409679409

No exemplo acima, a variável i controla o número de repetições do laço.


Normalmente, a variável de controle do laço recebe um valor inicial, é
incrementada (ou decrementada) de um valor constante no laço e tem
seu valor testado no final do laço. Ao chegar a um determinado valor, o
laço é interrompido. A inicialização da variável contadora deve acontecer
fora do laço, antes do seu início.

Prof. Lênin e Júnior www.estrategiaconcursos.com.br 24/91


Noções de Informática – ATA/MF
Teoria e questões comentadas
Prof. Lênin e Júnior – Aula 4

COMPARAÇÃO ENTRE OS COMANDOS ENQUANTO E REPITA


ENQUANTO REPITA
1. os comandos internos ao 1. os comandos internos ao repita
enquanto podem nunca são executados pelo menos uma
serem executados; vez;
2. o laço do enquanto é 2. o laço do repita é realizado
executado quando a quando a condição for falsa;
condição for verdadeira;
3. a estrutura enquanto 3. a estrutura repita faz e testa.
testa e faz. 07409679409

ESTRUTURA DE REPETIÇÃO COM VARIÁVEL DE CONTROLE

O comando para...faça também permite a descrição, dentro de um


algoritmo, de uma estrutura de repetição. Sua forma geral é:

para <variável de controle> de <valor inicial> até <valor final> [passo <incremento>] faça

<lista de comandos>

Fim-para

Prof. Lênin e Júnior www.estrategiaconcursos.com.br 25/91


Noções de Informática – ATA/MF
Teoria e questões comentadas
Prof. Lênin e Júnior – Aula 4

Na estrutura para..faça, a variável de controle é inicializada com <valor


inicial> e no início de cada iteração, seu valor é comparado com <valor
final>. Se o valor da variável for menor ou igual a <valor final>, a lista
de comandos é executada e após ser executado o último comando da
lista, a variável de controle é incrementada. Isto repete-se até que o valor
da variável de controle seja maior que <valor final>, quando então é
executado o comando imediatamente após a palavra fim-para. A
instrução passo é necessária se o incremento for diferente de 1.

Um algoritmo que lê escreve os números ímpares de 1 a 1000.

para i de 1 ate 1000 passo 2 faça // Incrementa i de 2 em 2

fim-para

Observações sobre o comando:

 dentro dos comandos internos ao PARA a variável de controle não


pode ser alterada

 os valores de inicio, final e incremento podem ser números,


variáveis ou expressões.
07409679409

 não é permitido alterar as variáveis com os valores de início, final e


incremento dentro da estrutura.

 quando o valor do incremento for 1, este pode ser omitido;

 o valor do incremento pode ser negativo, neste caso o valor inicial


da variável de controle deve ser maior do que seu valor final.

Prof. Lênin e Júnior www.estrategiaconcursos.com.br 26/91


Noções de Informática – ATA/MF
Teoria e questões comentadas
Prof. Lênin e Júnior – Aula 4

RESUMO – ESTRUTURAS DE REPETIÇÃO


A- ENQUANTO B- REPITA C- PARA
Enquanto a condição for Os comandos internos a uma variável que controla
VERDADEIRA, o conjunto de ele são executados ao o início e o fim da
comandos é executado. menos uma vez, execução
independente da condição
Se a condição é FALSA o - O laço REPITA é realizado PARA variável DE valor1
conjunto NÃO é executado somente se a condição for ATÉ valor2 PASSO valor3
FALSA FAÇA
ENQUANTO < condição > comando 1
FAÇA REPITA …
comando 1 comando 1 07409679409
comando n
comando n … FIM-PARA
FIM-ENQUANTO comando n
ATÉ <condição>

Prof. Lênin e Júnior www.estrategiaconcursos.com.br 27/91


Noções de Informática – ATA/MF
Teoria e questões comentadas
Prof. Lênin e Júnior – Aula 4

Variáveis Compostas Homogêneas - ARRAYS

A declaração de variáveis, uma a uma, é suficiente para a codificação


algorítmica da solução de uma ampla gama de problemas, mas é
insuficiente para resolver um grande número de problemas
computacionais. Imagine, por exemplo, como faríamos para construir um
algoritmo, que lesse os nomes de 500 pessoas e imprimisse um relatório
destes mesmos nomes, mas ordenados alfabeticamente. Não seria uma
tarefa simples, pois teríamos que definir 500 variáveis do tipo literal,
como é mostrado abaixo:

Considere o tamanho do algoritmo, e o trabalho braçal necessário para


construí-lo. Para resolver problemas como este, e outros, existem as
variáveis indexadas. A declaração de uma variável indexada corresponde,
na verdade, à declaração de várias variáveis cujo identificador difere
apenas por um índice. O índice corresponde a um valor numérico
começando por 1. Cada variável indexada pode receber valores no
decorrer do algoritmo como se fosse uma variável comum.
07409679409

Variáveis COMPOSTAS HOMOGÊNEAS Unidimensionais (Vetores)

Variáveis indexadas com uma única dimensão, também conhecidas como


vetores, são referenciadas por um único índice. A sintaxe para declaração
é:

<identificador> : vetor [<tamanho>] de < tipo >

Tamanho [VI..VF] 

Vi é o valor inicial do índice e

Prof. Lênin e Júnior www.estrategiaconcursos.com.br 28/91


Noções de Informática – ATA/MF
Teoria e questões comentadas
Prof. Lênin e Júnior – Aula 4

VF é o valor final do índice.

Exemplo

IDADE: VETOR [1..5] DE INTEIRO

NOMES: VETOR [1..5] DE CARACTERE

A declaração acima corresponde à declaração de 10 variáveis:

nomes[1], nomes[2], nomes[3], nomes[4], nomes[5],

idades[1], idades[2], idades[3], idades[4] e idades[5].

Para se atribuir um valor a um elemento do vetor devemos utilizar o


seguinte padrão:

< identificador>[<posição>] <- <valor>

Exemplos:

1. nomes[1] <- J “

2. idades[1] <- 35

3. nomes[3] <- M A

4. idades[3] <- idades[1]

5. i <- 5

6. idades[i] <- 45

Algoritmo que lê um vetor NUMERO de 6 posições e o escreve. A seguir,


ele conta quantos valores de NUMERO são negativos e escreva esta
07409679409

informação.

Prof. Lênin e Júnior www.estrategiaconcursos.com.br 29/91


Noções de Informática – ATA/MF
Teoria e questões comentadas
Prof. Lênin e Júnior – Aula 4

Variáveis COMPOSTAS HOMOGÊNEAS Bidimensionais (Matrizes)

Variáveis indexadas com duas dimensões, também conhecida como


matrizes, são referenciadas por dois índices, cada qual começando por 1.
Observe que as linguagens de programação determinam os limites válidos
para os índices. Cada dimensão da matriz, em geral, representa uma
07409679409

classificação de informação. Por exemplo, as linhas poderiam representar


um aluno, enquanto as colunas representariam as notas. É possível criar
variáveis compostas com mais de duas dimensões, basta acrescentar as
novas dimensões na declaração e na manipulação (da mesma forma como
acrescentamos aqui).

É importante ressaltar que cada posição da matriz é uma variável interna


e, como tal, ocupa espaço. Assim, temos que nos preocupar com o total
de espaço utilizado pela estrutura para não consumir todo o espaço
disponível e causar falhas nos programas.

A sintaxe para declaração é:

Prof. Lênin e Júnior www.estrategiaconcursos.com.br 30/91


Noções de Informática – ATA/MF
Teoria e questões comentadas
Prof. Lênin e Júnior – Aula 4

<identificador> : vetor [<tamanho1>,<tamanho2>] de < tipo >

Ex: PESSOAS: VETOR [1..2,1..3] DE CARACTERE

A declaração acima corresponde à declaração de 6 variáveis:

PESSOAS[1,1], PESSOAS [1,2], PESSOAS[1,3],

PESSOAS[2,1], PESSOAS [2,2], e PESSOAS [2,3].

Para se atribuir um valor a um elemento do vetor devemos utilizar o


seguinte padrão:

< identificador>[<posição 1>,<posição 2>] <- <valor>

Ex: PESSOAS[1,3]<- T

Algoritmo que lê uma matriz vê Valores(3,3) e calcula as somas:

a) da linha 3 de Valores;

b) da coluna 2 de Valores;

c) da diagonal principal;

d) da diagonal secundária; e

e) de todos os elementos da matriz.

07409679409

Prof. Lênin e Júnior www.estrategiaconcursos.com.br 31/91


Noções de Informática – ATA/MF
Teoria e questões comentadas
Prof. Lênin e Júnior – Aula 4

07409679409

Prof. Lênin e Júnior www.estrategiaconcursos.com.br 32/91


Noções de Informática – ATA/MF
Teoria e questões comentadas
Prof. Lênin e Júnior – Aula 4

MODULARIZAÇÃO

A Programação Estruturada é o resultado de uma série de estudos e


propostas de disciplinas e metodologias para o desenvolvimento de
software. Evitando as comparações com outras técnicas de programação,
a programação estruturada prega conceitos como refinamentos sucessivos
e modularização, buscando levar ao código aspectos de confiabilidade,
legibilidade, manutenibilidade e flexibilidade.

A metodologia de refinamentos sucessivos utiliza a ideia de “dividir para


conquistar”. Neste contexto, resolver um problema complexo é mais fácil
se não considerarmos todos os aspectos do problema simultaneamente,
isto é, se for possível a decomposição de um problema grande numa série
de subproblemas mais simples. Quando no processo de desenvolvimento
do algoritmo faz-se a opção por divisão do algoritmo, este procedimento
conduz a modularização da solução do problema.

Um módulo é, então, um grupo de instruções organizadas em um trecho


de algoritmo com uma função bem definida. Esta divisão da atividade de
programação permite que, a cada instante, toda a atenção do
programador esteja concentrada na solução de um problema específico e
bem definido. Da mesma forma, pode-se verificar a correção do algoritmo
por etapas analisando-se a correção de cada módulo.

A decisão pela divisão do algoritmo em módulos traz benefícios como:

 maior flexibilidade e facilidade de manutenção, já que o módulo


pode esconder dos outros módulos detalhes que só interessam a
ele;
 permite a divisão de tarefa em uma equipe, onde cada módulo pode
ser desenvolvido por um programador diferente;
07409679409

 facilita o teste, porque cada módulo pode ser testado


individualmente, e depois ser incorporado ao conjunto;
 facilita o projeto, na medida em que permite a abstração.

Recomenda-se que os módulos sejam curtos e que realizem uma tarefa


específica. Além disso, em relação aos dados manipulados pelo módulo, é
importante que o módulo possua estruturas de dados próprias, suficientes
e necessárias apenas para atingir o objetivo final do módulo. Um bom
algoritmo deve procurar reduzir a interação entre módulos (acoplamento)

Prof. Lênin e Júnior www.estrategiaconcursos.com.br 33/91


Noções de Informática – ATA/MF
Teoria e questões comentadas
Prof. Lênin e Júnior – Aula 4

e aumentar o relacionamento dos elementos de um mesmo módulo


(coesão).

A modularização, que acaba se traduzindo na construção de


procedimentos e funções, traz vantagens como a reutilização de código
que se repete em vários programas ou que é executado várias vezes
dentro do mesmo programa. Como é de se esperar, também possui
desvantagens, como o acréscimo de tempo na execução de programa
constituídos de módulos, devido ao trabalho adicional de ativação do
módulo.

Os procedimentos e funções são subprogramas. Como tal, possuem um


cabeçalho (com um identificador do módulo), seção de declarações e
blocos de comandos. Deixando as linguagens de lado, que implementam
suas próprias regras para procedimentos e funções, os procedimentos são
módulos que executam uma ação sem retornar um resultado para o
programa, enquanto as funções são módulos que retornam um resultado.

Vamos adotar a sintaxe abaixo:

Procedimento <identificador> (<lista de parâmetros>)

<declaração de variáveis>

Início

<comandos>

Fim

Função <identificador> (<lista de parâmetros>) : tipo_retorno


07409679409

<declaração de variáveis>

Início

<comandos>

Fim.

As variáveis declaradas dentro de um módulo existirão em memória


somente durante a execução do módulo. Ao ser carregado, o módulo cria
um “ambiente” para a execução, onde constam suas variáveis. Este

Prof. Lênin e Júnior www.estrategiaconcursos.com.br 34/91


Noções de Informática – ATA/MF
Teoria e questões comentadas
Prof. Lênin e Júnior – Aula 4

“ambiente” é completamente destruído quando o módulo termina. As


variáveis declaradas no escopo do módulo são ditas variáveis locais e só
podem ser acessadas pelo próprio módulo e pelos módulos criados dentro
dele. As variáveis declaradas no programa principal são chamadas
variáveis globais. As variáveis globais são acessíveis por todos os
módulos, enquanto as variáveis locais só estão acessíveis ao módulo. É
permitida a criação de variáveis globais e locais com o mesmo nome, caso
em que será considerada a variável local quando o módulo possuir a
variável declarada localmente e, nos demais casos, a variável global será
a considerada. Em outras palavras, quando existe conflito de nomes (duas
variáveis com mesmo nome, sendo uma local e outra global), vale a
definição local, e a global deixa de poder ser acessada (embora continua
existindo normalmente).

A chamada aos módulos é realizada pela colocação de nome do módulo (e


seus parâmetros, caso existam) em uma linha de comando. Quando se
tratar de um procedimento, coloca-se o nome do procedimento e seus
parâmetros como único comando a ser executado na linha. Quando for
uma função, esta deve seguir as regras para expressões (uma função
retorna valor!). Então, deve aparecer em conjunto com instruções que
façam uso do resultado: atribuição, escreva, expressões etc. Alguns
autores entendem que é permitido utilizar o nome da função
isoladamente, mas o valor retornado será perdido. Então, qual seria a
utilidade da função chamada isoladamente, se o resultado não será
proveitoso?

Na definição da lista de parâmetros dos módulos, podemos ter uma série


de variáveis, que serão utilizadas no módulo. Os parâmetros podem ser
de entrada e/ou de saída. Estes parâmetros aparecem em dois locais: na
linha de cabeçalho do módulo – na lista de parâmetros, quando são
chamados de parâmetros FORMAIS e na chamada do módulo (execução),
07409679409

quando são chamados de parâmetros REAIS ou EFETIVOS.

Note que os parâmetros formais são variáveis locais ao módulo. Já os


parâmetros efetivos – quando são utilizados apenas como entrada de
dados para o módulo – podem ser variáveis, constantes ou expressões. Os
parâmetros efetivos que são usados como saída de dados devem ser
variáveis.

Nos casos onde os parâmetros efetivos devem ser variáveis (quando são
usados como parâmetros de entrada e saída), dizemos que a passagem
do parâmetro ocorre por referência, enquanto nos casos da utilização do

Prof. Lênin e Júnior www.estrategiaconcursos.com.br 35/91


Noções de Informática – ATA/MF
Teoria e questões comentadas
Prof. Lênin e Júnior – Aula 4

parâmetro apenas para entrada, temos a passagem de parâmetros por


valor.

O efeito disto é que na passagem de parâmetros por valor somente os


valores são passados para os parâmetros formais. Assim, qualquer
modificação nestas variáveis (parâmetros formais) não afetam a variável
global. De outro lado, na passagem de parâmetros por referência, é criado
um link (ponteiro) que conecta a variável local (parâmetro formal) com a
variável externa (parâmetro efetivo). Qualquer alteração na variável local
deste link, afeta diretamente a variável externa. De fato, as alterações
feitas no parâmetro formal, na verdade são realizados no parâmetro
efetivo (por conta do ponteiro).

Existem restrições para a passagem de parâmetros: a quantidade de


parâmetros formais deve ser a mesma dos parâmetros efetivos e os tipos
de dados devem ser compatíveis. Veja o exemplo a seguir:

Algoritmo "Exemplo"

07409679409

No Exemplo acima, o conteúdo da variável “X” não será alterado após o


retorno ao programa principal. Ao “chamar” o módulo (procedimento)
PassagemPorValor(X), o conteúdo da variável X (10) é passado para o
módulo (variável local A). A variável A inicia o módulo com o valor 10,
mas recebe o valor 5 durante a execução. Assim, quando o módulo
termina, A é destruída e a variável X continua com valor 10. Finalmente,
será impresso o valor 10 na tela.

Prof. Lênin e Júnior www.estrategiaconcursos.com.br 36/91


Noções de Informática – ATA/MF
Teoria e questões comentadas
Prof. Lênin e Júnior – Aula 4

Geralmente, usamos uma palavra para indicar que a passagem de


parâmetro é por referência. Adoto a palavra “var”, conforme a maioria dos
autores da área, mas é possível que outras palavras sejam encontradas
com este propósito. Vejamos o mesmo exemplo com passagem de
parâmetro por refeência.

Agora, como a passagem se dará por referência, não será o valor de X


que será o parâmetro a ser passado e sim, o endereço de memória da
variável (A passa a ser um ponteiro para X). Quando o comando A  5 é
executado, o ponteiro A faz com que a variável X receba o resultado.
Temos aqui a passagem de parâmetro por referência e a demonstração de
uma variável de entrada e saída. 07409679409

No caso de uma função, esta sempre retorna valor. Então, a declaração


deve ser acompanhada de um tipo de dado para o valor de retorno. É
importante salientar que a função só pode retornar um valor. Exemplo:

Prof. Lênin e Júnior www.estrategiaconcursos.com.br 37/91


Noções de Informática – ATA/MF
Teoria e questões comentadas
Prof. Lênin e Júnior – Aula 4

No exemplo acima, a função soma recebe dois parâmetros, calcula a soma


entre eles e retorna o resultado encontrado. Suponha que os valores
digitados para X e Y sejam 5 e 10, respectivamente. Neste caso, o valor
de Z, escrito ao final, será 15.

Independência Funcional

Quando projetamos um algoritmo devemos construir módulos com apenas


um propósito (alta coesão), e diminuir ao máximo a interação entre eles
(baixo nível de acoplamento). A independência funcional é fundamental
para um bom projeto.

Coesão: É a medida da força funcional relativa de um módulo. É a medida


que indica se um módulo possui uma função bem definida no sistema.
Podemos classificar um software em relação à coesão, da seguinte
maneira:


07409679409

coincidental: quando o módulo realiza várias tarefas, que não tem


nenhuma relação uma com a outra;
 lógica: quando o módulo executa tarefas logicamente relacionadas,
por exemplo, um módulo que realiza todas as entradas de dados de um
software;
 temporal: quando o módulo contém tarefas que são relacionadas pelo
fato de todas terem que ser executadas num mesmo intervalo de
tempo.

Prof. Lênin e Júnior www.estrategiaconcursos.com.br 38/91


Noções de Informática – ATA/MF
Teoria e questões comentadas
Prof. Lênin e Júnior – Aula 4

Acoplamento: depende da complexidade da interface (interação) entre


os módulos. Quando temos um alto acoplamento, significa dizer que um
módulo deve conhecer detalhes da implementação do outro, as alterações
propagam-se pelo sistema, e o sistema é potencialmente mais difícil de
entender. Podemos classificar um software, em relação ao acoplamento,
da seguinte maneira:

 baixo acoplamento: quando a interface entre módulos se faz através


da passagem de dados;
 acoplamento moderado: quando a interface entre os módulos é feita
por controle, por exemplo, quando o módulo1 passa o controle para o
módulo 2;
 acoplamento elevado: quando o módulo está ligado a um ambiente
externo ao software, por exemplo, a Entrada/Saída acopla um módulo
a dispositivos, formatos e protocolos de comunicação. Ou ainda,
módulos que utilizam variáveis globais.

Quanto maior o nível de coesão e menor

o nível de acoplamento, melhor é o software.

RECURSÃO

Na programação de computadores, a recursão é uma técnica que define


um problema em termos de uma ou mais versões menores deste mesmo
07409679409

problema. Esta ferramenta pode ser utilizada sempre que for possível
expressar a solução de um problema em função do próprio problema.
Sendo assim, um número infinito de cálculos pode ser definido por um
programa recursivo finito, ainda que este não contenha repetições
explícitas (como do, while, for, repeat etc).

A recursão não é um conceito novo, sendo diretamente derivado das


relações de recorrência da Matemática. Um exemplo clássico é o
somatório (A soma S dos N primeiros números inteiros):

Prof. Lênin e Júnior www.estrategiaconcursos.com.br 39/91


Noções de Informática – ATA/MF
Teoria e questões comentadas
Prof. Lênin e Júnior – Aula 4

FIQUE LIGADO, JÁ CAIU EM PROVA!

O método de recursividade deve ser utilizado para


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

Nota-se que o somatório de 4 está dentro do somatório de 5, assim como


o de 3 está no de 4, o de 2 está no de 3 e assim por diante. Porém, em
algum momento, é necessário se achar uma solução definitiva para o
problema, que não envolva à resolução de novos somatórios. Esta solução
definitiva aparece quando se busca a solução para S(1), que é igual a 1.
Uma vez que se tem a solução para S(1), pode-se substituir este valor na
expressão S(2) = 2 + S(1) 1, e assim por diante. Com isso, para se
chegar a resolução do somatório de 5, basta somar o somatório de 4 mais
5.

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

Esta chamada pode ser diretamente recursiva, quando o procedimento P


contiver uma referência explícita a si próprio, ou 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. Com
isso, a recursão pode não ser imediatamente visível pela inspeção do
texto do programa. Todos os procedimentos apresentados neste texto
utilizam-se de recursão direta.

É comum a definição de variáveis locais a um procedimento. Quando o


mesmo procedimento é ativado recursivamente, um novo conjunto de
variáveis locais é criado. Ainda que com os mesmos nomes, mas em

Prof. Lênin e Júnior www.estrategiaconcursos.com.br 40/91


Noções de Informática – ATA/MF
Teoria e questões comentadas
Prof. Lênin e Júnior – Aula 4

posições de memória diferentes. Conflitos de nomes são evitados pela


aplicação das regras de escopo dos identificadores, os quais se referem às
variáveis recentemente criadas.

Em se tratando de procedimentos recursivos pode-se ocorrer um


problema de terminação do programa, como um “looping interminável ou
infinito”.

Portanto, para determinar a terminação das repetições, deve-se:

1) Definir uma função que implica em uma condição de


terminação (solução trivial), e
2) Provar que a função decresce a cada passo de repetição,
permitindo que, eventualmente, esta solução trivial seja
atingida.

Retomando o exemplo do somatório, percebemos que existe uma função,


a qual é chamada constantemente até que encontre a solução do
problema. Então temos que:

S(N) = S(N – 1) + N

Como a solução para S(N) pode ser encontrada a partir da solução de S(N
– 1), que é uma simplificação do problema, podemos continuar a diminuir
o valor de N até chegarmos a uma solução trivial, isto é, se N = 1 então
S(N) = 1.

Para um bom funcionamento de um procedimento recursivo, ele deve


conter pelo menos uma solução trivial.

Sabendo-se disto podemos refinar a regra para o cálculo recursivo dos N


primeiros números inteiros:
07409679409

A partir desta regra, fica fácil se codificar o programa em C que


implementa o somatório. Ex:

Prof. Lênin e Júnior www.estrategiaconcursos.com.br 41/91


Noções de Informática – ATA/MF
Teoria e questões comentadas
Prof. Lênin e Júnior – Aula 4

Quando não se deve empregar recursão?


Algoritmos recursivos são particularmente apropriados quando o problema
for definido em termos recursivos. Isto não significa, no entanto, que tais
definições recursivas garantam ser um algoritmo recursivo a melhor
maneira de se resolver o problema. Como exemplo podemos citar o
mesmo exemplo do somatório, para o qual não é eficiente usar a recursão
e sim a iteração (comandos explícitos de repetição, como: for, while...),
sendo a melhor solução para o problema.

De fato, a apresentação da técnica através de exemplos inadequados tem


sido a principal causa da grande apreensão e antipatia criadas contra o
uso da recursão nas atividades de programação, bem como pela
associação direta entre recursão e ineficiência. Por exemplo, o programa
seguinte (Fibonacci), claramente deveria ser resolvido de maneira
07409679409

iterativa. Porém, apenas para fins didáticos, posto que ele facilita explicar
um tipo específico de recursão, sua solução é apresentada de maneira
recursiva. Para melhor entendimento, será apresentado o exemplo da
sequência de Fibonacci:

n-ésimo termo da série 1 2 3 4 5 6 7 8 9 1 11


0

Valor do n-ésimo termo da 1 1 2 3 5 8 1 2 3 5 89


série 3 1 4 5

Prof. Lênin e Júnior www.estrategiaconcursos.com.br 42/91


Noções de Informática – ATA/MF
Teoria e questões comentadas
Prof. Lênin e Júnior – Aula 4

O processo recursivo, nesse caso, é baseado na recorrência válida para


essa sequência: todo termo é igual à soma dos dois termos anteriores.

1, se N = 1 ou N = 2  temos 2 soluções triviais


Fibonacci
Fibonacci(N – 1)+Fibonacci(N – 2), se N > 2

Exemplo de algoritmo que calcula o valor do n-ésimo termo da série de


Fibonacci:

Como se nota, uma chamada do procedimento fibonacci(n) ativa


07409679409

recursivamente esta função. Observe-se que cada chamado com n > 1


leva a 2 outras chamadas, isto é, o número total de chamadas cresce
exponencialmente.

Prof. Lênin e Júnior www.estrategiaconcursos.com.br 43/91


Noções de Informática – ATA/MF
Teoria e questões comentadas
Prof. Lênin e Júnior – Aula 4

De acordo com a ilustração acima, o cálculo do 5º termo da série, levando


em consideração o crescimento exponencial do número de chamadas, nos
retorna a solução após 15 chamadas da função recursiva. Isso faz com
que o programa perca muito em velocidade, sendo assim um programa
lento. Felizmente, os números de Fibonacci podem ser calculados por um
algoritmo iterativo (repetições), que evita o cálculo repetido dos mesmos
valores, através do uso de variáveis auxiliares.

Assim, conclui-se que deve ser evitado o uso de recursão sempre que for
conhecida uma solução óbvia, que utilize a técnica de iteração.
Entretanto, isto não deverá levar a uma rejeição incondicional do uso da
07409679409

técnica de recursão. Vale lembrar que todo programa recursivo pode ser
transformado em outro equivalente, puramente iterativo.

Vantagens X Desvantagens
Um programa recursivo é mais elegante e menor que a sua versão
iterativa, além de exibir com maior clareza o processo utilizado, desde que
o problema ou os dados sejam naturalmente definidos através de
recorrência. Por outro lado, um programa recursivo exige mais espaço de
memória e é, na grande maioria dos casos, mais lento do que a versão
iterativa.

Prof. Lênin e Júnior www.estrategiaconcursos.com.br 44/91


Noções de Informática – ATA/MF
Teoria e questões comentadas
Prof. Lênin e Júnior – Aula 4

3. QUESTÕES COMENTADAS.

01. (ESAF/2009/ANA/DESENVOLVIMENTO DE SISTEMAS/Q.26)


Na programação estruturada, são necessários apenas três blocos de
formas de controle para implementar algoritmos. São eles:

a) seleção, repetição e aninhamento.

b) empilhamento, aninhamento e operação.

c) sequência, aninhamento e seleção.

d) sequência, seleção e repetição.

e) função, operação e programa.

Comentários

Na programação estruturada, são necessários apenas três blocos de


formas de controle para implementar algoritmos. São eles: sequência,
seleção e repetição.

 A sequência de instruções é ordenada de forma lógica para a resolução


de uma determinada tarefa ou problema.
Na estrutura de sequência os comandos deverão ser executados numa
sequência linear, seguindo-se o texto em que estão escritos, de cima
para baixo, se não houver indicação em contrário.
 O bloco de seleção ou estrutura condicional permite a escolha do grupo
de ações e estruturas a ser executado quando determinadas condições
(expressões lógicas) são ou não satisfeitas. Esta estrutura pode se
apresentar de duas formas:
o Estrutura Condicional Simples;
o Estrutura Condicional Composta.
07409679409

 A estrutura de repetição permite que uma sequência de comandos seja


executada repetidamente até que uma determinada condição não seja
satisfeita. Existem diferentes formas de avaliar a condição em
estruturas de repetição.

GABARITO: D.

02. (ESAF/2008/Prefeitura de Natal - RN/Auditor do Tesouro


Municipal - Tecnologia da Informação) Analise as seguintes
afirmações relacionadas a conceitos básicos sobre Programação:

Prof. Lênin e Júnior www.estrategiaconcursos.com.br 45/91


Noções de Informática – ATA/MF
Teoria e questões comentadas
Prof. Lênin e Júnior – Aula 4

I. Um procedimento é um conjunto de comandos para uma tarefa


específica referenciada por um nome no algoritmo principal, retornando
um determinado valor no seu próprio nome.

II. Podem-se inserir módulos em um algoritmo. Para isso, pode-se


utilizar "Procedimentos" ou "Funções". As ações das "Funções" e dos
"Procedimentos" são hierarquicamente subordinadas a um módulo
principal.

III. Cada "Função" ou "Procedimento" pode utilizar constantes ou


variáveis do módulo principal ou definir suas próprias constantes ou
variáveis.

IV. Uma variável global indica o endereço onde um valor é armazenado


na memória do computador enquanto um ponteiro representa um valor
numérico real.

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

a) I e II.

b) II e III.

c) III e IV.

d) I e III.

e) II e IV.

Comentários

I) um procedimento não retorna valor.

II) Correto. O programa principal é um módulo.


07409679409

III) Correto. É permitido, e indicado, a declaração local de constantes e


variáveis.

IV) Errado. O ponteiro indica o endereço onde um valor é armazenado e


uma variável global é aquela declarada no programa principal, acessível a
todos os módulos do programa.

GABARITO: B.

03. (ESAF/2008/STN/DESENVOLVIMENTO DE SISTEMAS) Para


resolver um determinado problema, um programador tem em mente

Prof. Lênin e Júnior www.estrategiaconcursos.com.br 46/91


Noções de Informática – ATA/MF
Teoria e questões comentadas
Prof. Lênin e Júnior – Aula 4

como deve ser o programa principal que, por sua vez, controlará todas
as outras tarefas distribuídas em sub-rotinas, para as quais deverá
desenvolver os respectivos algoritmos. Este cenário exemplifica o
conceito de programação

a) estruturada.

b) orientada a objetos.

c) funcional.

d) numérica.

e) orientada a aspectos.

Comentários

Item a. Estabelece uma disciplina de desenvolvimento de algoritmos que


facilita a compreensão de programas através do número restrito de
mecanismos de controle da execução de programas. Qualquer algoritmo,
independentemente da área de aplicação, de sua complexidade e da
linguagem de programação na qual será codificado, pode ser descrito
através destes mecanismos básicos. O princípio básico de programação
estruturada é que um programa é composto por blocos elementares de
código que se interligam através de três mecanismos básicos, que são
sequência, seleção e iteração. Cada uma destas construções tem um
ponto de início (o topo do bloco) e um ponto de término (o fim do bloco)
de execução. Item CERTO.

Item b. É um paradigma de análise, projeto e programação de sistemas


de software baseado na composição e interação entre diversas unidades
de software chamadas de objetos. Na programação orientada a objetos,
07409679409

implementa-se um conjunto de classes que definem os objetos presentes


no sistema de software. Cada classe determina o comportamento
(definido nos métodos) e estados possíveis (atributos) de seus objetos,
assim como o relacionamento com outros objetos. Item ERRADO.

Item c. É um paradigma de programação que trata a computação como


uma avaliação de funções matemáticas e que evita estados ou dados
mutáveis. Ela enfatiza a aplicação de funções, em contraste da
programação imperativa, que enfatiza mudanças no estado do programa.
Linguagens de programação funcionais, especialmente as puramente
funcionais, tem sido mais usadas academicamente que no
desenvolvimento comercial de software. Item ERRADO.

Prof. Lênin e Júnior www.estrategiaconcursos.com.br 47/91


Noções de Informática – ATA/MF
Teoria e questões comentadas
Prof. Lênin e Júnior – Aula 4

Item d. Refere-se ao tipo de programação que trata exclusivamente de


operações matemáticas entre variáveis. A maior parte dos tipos
existentes na matemática (vetores, matrizes, escalares, etc) já se
encontram pré-definidos nesse tipo de linguagem e o seu uso pode, por
vezes, ser simbólico (uso de funções em vez de números, por exemplo,
plot(sin(x)) em vez de plot(x) com x = [...]). As operações entre estes
tipos encontram-se otimizadas. Tipo de linguagens numéricas: Fortran,
gnumeric, matlab, mathematica, etc. Item ERRADO.

Item e. É um paradigma de programação de computadores que permite


aos desenvolvedores de software separar e organizar o código de acordo
com a sua importância para a aplicação. Todo o programa escrito no
paradigma orientado a objetos possui código que é alheio a
implementação do comportamento do objeto. Este código é todo aquele
utilizado para implementar funcionalidades secundárias e que encontra-se
espalhado por toda a aplicação. Esse paradigma de programação permite
que o código seja encapsulado e modularizado. Item ERRADO.

GABARITO: A.

04. (ESAF/2007/SEFAZ-CE-TI) Quando uma função é definida em


termos de si mesma fica caracterizado o uso

a) da recursividade.

b) da iteratividade.

c) da interatividade.

d) do acesso direto a Banco de Dados.


07409679409

e) de DLLs.

Comentários

Um programa recursivo é um programa que chama a si mesmo, direta ou


indiretamente.

Exemplo:

Função Fatorial (i)

se i ≤ 1 então

retorne 1;

Prof. Lênin e Júnior www.estrategiaconcursos.com.br 48/91


Noções de Informática – ATA/MF
Teoria e questões comentadas
Prof. Lênin e Júnior – Aula 4

senão

retorne Fatorial (i - 1) * i;

fim-se

Fim Função

Vantagens: diminuição e clareza do código.

Desvantagens: redução no desempenho e dificuldade na depuração.

GABARITO: A.

05. (FCC/2013/MPAMD/A.APOIO-PROGRAMADOR/Q.44)
Considere o programa em pseudocódigo abaixo:

07409679409

Prof. Lênin e Júnior www.estrategiaconcursos.com.br 49/91


Noções de Informática – ATA/MF
Teoria e questões comentadas
Prof. Lênin e Júnior – Aula 4

É correto afirmar:

a) Como o programa utiliza o comando enquanto ao invés do comando


para, não seria necessário incrementar a variável de controle índice
dentro do bloco, uma vez que esta é incrementada de 1
automaticamente.
b) O resultado do cálculo da comissão do vendedor é atribuído à
variável comissão e corresponde a 1% do valor da venda realizada
por ele.
c) O valor da variável vendas é atribuído ao vetor comissão na posição
do vetor correspondente ao valor do índice relacionado ao vendedor.
d) O segundo comando enquanto percorre novamente os vetores,
começando do índice 1, incrementando a variável índice e
mostrando os dados dos vendedores: nome e comissão.
e) O primeiro comando enquanto faz com que o fluxo do programa
seja repetido até que a variável índice fique menor que 10, ou seja,
esse bloco de comandos vai ser repetido 10 vezes.

Comentários

O comando enquanto não incrementa a variável de controle


automaticamente é necessário incrementá-la dentro do bloco como
mostrado na questão. Item A errado.

O resultado do cálculo da comissão do vendedor realmente é atribuído à


variável comissão, porém o valor correspondente não é 1%, veja que na
linha 15 o resultado do cálculo é a divisão do valor das vendas por 10,
07409679409

este cálculo está errado caso o valor esperado fosse 1% das vendas. Uma
forma de escrever esta linha seria: comissão฀venda*0,01. Item B
errado.

O item C está errado, o certo seria o valor da variável comissão é


atribuído ao vetor vendas na posição do vetor correspondente ao valor
do índice relacionado ao vendedor.

O primeiro comando enquanto faz com que o fluxo do programa seja


repetido enquanto a variável índice for menor ou igual a 10, ou seja,
esse bloco de comandos vai ser repetido 10 vezes.

O item D está correto.

Prof. Lênin e Júnior www.estrategiaconcursos.com.br 50/91


Noções de Informática – ATA/MF
Teoria e questões comentadas
Prof. Lênin e Júnior – Aula 4

GABARITO: D.

06. (FCC/2013/MPAMD/A.APOIO-PROGRAMADOR/Q.45)
Considere o vetor vet a seguir:

Após a execução dos seguintes comandos de atribuição:

aux vet[8]

vet[8] vet [1]

vet[4] vet[6]

vet[6] vet[3]

vet[3] vet[1] aux

A configuração do vetor (do índice 1 ao 8) será

a) ZONAAMAS
b) AMASZONA
c) SMAZONAS
d) AMASSONA
e) AMAZONAS

Comentários

Vamos à um teste de mesa para verificar como a configuração do vetor


07409679409

será?

Algoritmo Teste de Mesa


Vetor
Inicio Aux 1 2 3 4 5 6 7 8
? S M N A O Z A A
aux A S M N A O Z A A
vet[8]
vet[8] vet A S M N A O Z A S

Prof. Lênin e Júnior www.estrategiaconcursos.com.br 51/91


Noções de Informática – ATA/MF
Teoria e questões comentadas
Prof. Lênin e Júnior – Aula 4

[1]
vet[4] A S M N Z O Z A S
vet[6]
vet[6] A S M N Z O N A S
vet[3]
vet[1] A A M S Z O N A S
aux
vet[3] A A M A Z O N A S
vet[1]

Na última linha onde temos: vet[3] vet[1] aux, precisamos prestar


atenção no fluxo da informação para não errar, aqui o vet[1] recebe
primeiro o valor de aux para depois vet[3] receber o valor de vet[1].

GABARITO: E.

07. (FCC/2013/ALE-RN/PROGRAMADOR/Q.46) Considere o


algoritmo na forma de pseudocódigo a seguir:

07409679409

Prof. Lênin e Júnior www.estrategiaconcursos.com.br 52/91


Noções de Informática – ATA/MF
Teoria e questões comentadas
Prof. Lênin e Júnior – Aula 4

07409679409

O pseudocódigo acima
a) está incorreto, pois a estrutura de seleção se necessita da cláusula
então para o caso da condição ser verdadeira e da cláusula senão
para caso da condição ser falsa.

Prof. Lênin e Júnior www.estrategiaconcursos.com.br 53/91


Noções de Informática – ATA/MF
Teoria e questões comentadas
Prof. Lênin e Júnior – Aula 4

b) está correto, e seu objetivo é classificar em ordem crescente, o


conteúdo de um vetor que recebe 4 valores inteiros lidos.
c) está correto, e seu objetivo é ler 4 elementos e procurar um
elemento informado no vetor utilizando busca binária.
d) está incorreto, pois em todas as linguagens de programação a
primeira posição do vetor é 1 e não 0 como mostra o algoritmo.
e) está correto, e se forem lidos os valores 4, 7, 1, 9 e 3, nesta ordem,
serão exibidos os valores 9, 7, 4, 3 e 1, nesta ordem.

Comentários

Em uma estrutura condicional simples a cláusula senão não aparece, e


este é o caso da questão, que precisa apenas testar uma condição
verdadeira para que execute o bloco de códigos dentro da estrutura. Item
A errado.

O item C está incorreto, o pseudocódigo acima tem como objetivo


classificar em ordem crescente, o conteúdo de um vetor que recebe 4
valores inteiros lidos.

Praticamente em todas as linguagens de programação a primeira posição


do vetor é 0. Eu digo praticamente todas, pois existem linguagens que
permitem ao programador definir o índice da primeira posição. Item D
errado.

Se forem lidos os valores 4, 7, 1, 9 e 3, nesta ordem, serão exibidos os


valores 1, 3, 4, 7, 9, já que o pseudocódigo acima tem como objetivo
classificar em ordem crescente os números.

GABARITO: B. 07409679409

08. (FCC/2013/DPE-SP/PROGRAMADOR/Q.53) O algoritmo a


seguir utiliza palavras do nosso idioma para representar a resolução
lógica de um problema computacional:

Prof. Lênin e Júnior www.estrategiaconcursos.com.br 54/91


Noções de Informática – ATA/MF
Teoria e questões comentadas
Prof. Lênin e Júnior – Aula 4

O pseudocódigo apresentado
a) calcula o fatorial de cada número lido e armazena em um vetor em
ordem decrescente.
b) está incorreto, pois qualquer vetor de inteiros em todas as
linguagens de programação começam pela posição (índice) 1.
c) está incorreto, pois se forem digitados para n os valores 3, 8, 1, 9 e
07409679409

4, um laço infinito será gerado.


d) classifica em ordem crescente os valores armazenados em um
vetor.
e) armazena 5 valores em um vetor e, em seguida, procura pelo maior
valor armazenado.

Comentários

Este pseudocódigo classifica em ordem crescente os valores armazenados


em um vetor, um teste de mesa, pode confirmar está afirmação. Item A
errado.

Prof. Lênin e Júnior www.estrategiaconcursos.com.br 55/91


Noções de Informática – ATA/MF
Teoria e questões comentadas
Prof. Lênin e Júnior – Aula 4

Praticamente em todas as linguagens de programação a primeira posição


do vetor é 0. Eu digo praticamente todas, pois existem linguagens que
permitem ao programador definir o índice da primeira posição. Item B
errado.

Se forem digitados para n os valores 3, 8, 1, 9 e 4 o vetor seria


classificado em ordem crescente e o seu resultado seria 1, 3, 4, 8, 9. Item
C errado.

O pseudocódigo armazena 5 valores em um vetor e, em seguida, o


classifica em ordem crescente.

GABARITO: D.

09. (FCC/2013/TRT9/TECNOLOGIA DA INFORMAÇÃO/Q.33)


Analise o algoritmo em pseudo código abaixo:

início

real: n1, n2;

imprima(“Digite a primeira nota: ”);

leia(n1);

imprima(“Digite a segunda nota: ”);

leia(n2);

se

então 07409679409

media (n1+n2)/2;

imprima (“A media das notas é ”, medi

senão

imprima(“Alguma nota fornecida é inválida.”);

fim se;

fim.

Prof. Lênin e Júnior www.estrategiaconcursos.com.br 56/91


Noções de Informática – ATA/MF
Teoria e questões comentadas
Prof. Lênin e Júnior – Aula 4

Considerando que uma nota válida deve possuir valores entre 0 e 10


(inclusive), a lacuna que corresponde à condição do comando SE é
corretamente preenchida por
a) n1 >= 0 OU n1 <=10 OU n2 >= 0 OU n2 <=10
b) (n1 >= 0 E n1 <=10) OU (n2 >= 0 E n2 <=10)
c) (n1 >= 0 OU n1 <=10) E (n2 >= 0 OU n2 <=10)
d) n1 >= 0 E n1 <=10 E n2 >= 0 E n2 <=10
e) n1 > 0 E n1 <10 E n2 > 0 E n2 <10

Comentários

Para satisfazer as condições que validam uma nota, onde é necessário


valores entre 0 e 10 (inclusive), precisamos usar no comando SE o
operador lógico E para montar a condição, pois ele é aquele que exige que
todos os termos da expressão sejam verdadeiros para que a expressão
inteira seja verdadeira. Neste caso teremos então:

n1 >= 0 E n1 <=10 E n2 >= 0 E n2 <=10, assim para a condição ser


verdadeira, os quatro termos presentes nela precisam ser verdadeiros.

GABARITO: D.

10. (CESPE/2013/TRT17/TECNOLOGIA DA INFORMAÇÃO/Q.106)


São exemplos de constantes literais "NOME", "Abacaxi", "falso",
"304958" e "23/12/99".

Comentários
07409679409

Uma constante é um tipo especial de variável, a qual não terá seu


conteúdo modificado durante toda a execução de um algoritmo, ou seja,
seu valor é fixo. Uma constante é declarada da mesma forma que uma
variável e já recebe o seu valor.

As constantes ou variáveis podem assumir um dos quatro tipos básicos de


dados.

 Inteiro: qualquer número inteiro, negativo, nulo ou positivo.


 Real: qualquer número real, negativo, nulo ou positivo.
 Lógico: conjunto de valores Falso ou Verdadeiro em proposições
lógicas.

Prof. Lênin e Júnior www.estrategiaconcursos.com.br 57/91


Noções de Informática – ATA/MF
Teoria e questões comentadas
Prof. Lênin e Júnior – Aula 4

 Caracter ou Literal: qualquer conjunto de caracteres alfanuméricos


delimitados por aspas.

GABARITO: C.

11. (CESPE/2013/TRT17/TECNOLOGIA DA INFORMAÇÃO/Q.107)


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

Comentários

O algoritmo acima não imprime a soma dos termos da sequência. O


algoritmo vai imprimir o último valor da variável SOMA obtido quando a
variável CONTADOR alcançar o valor igual a 20, neste momento, o valor
de SOMA será 20,05.

O grande detalhe deste algoritmo está na linha 5. Nesta linha a variável


SOMA recebe um novo valor a cada novo resultado da expressão, não
acumulando a soma dos resultados. Para que a variável SOMA consiga
acumular a soma dos termos da sequencia a linha cinco teria que ser
escrita da seguinte forma:
07409679409

SOMA  SOMA + (CONTADOR + (1/CONTADOR))

GABARITO: E.

12. (VUNESP/2013/IMESC-SP/INFORMÁTICA/Q.55) Considere


o algoritmo a seguir para responder à questão. Esse algoritmo está
expresso na forma denominada Português Estruturado (também
conhecida como pseudocódigo).

Prof. Lênin e Júnior www.estrategiaconcursos.com.br 58/91


Noções de Informática – ATA/MF
Teoria e questões comentadas
Prof. Lênin e Júnior – Aula 4

Considerando que, antes da execução do algoritmo, x e y possuam o


mesmo valor, pode-se afirmar que, após a execução do algoritmo,

a) somente o valor da variável x terá sido atualizado.

b) somente o valor da variável y terá sido atualizado.

c) os valores das variáveis x e y terão sido atualizados, apenas uma


vez cada.

d) os valores das variáveis x e y terão sido atualizados, sendo que o de


y apenas uma vez, e o de x, duas vezes.

e) nenhuma variável terá sido alterada, pois essa condição não está
prevista no algoritmo apresentado.

Comentários 07409679409

Considerando que, antes da execução do algoritmo, x e y possuam o


mesmo valor, pode-se afirmar que, após a execução do algoritmo,
somente o valor da variável y terá sido atualizado.

Analisando o algoritmo, temos uma estrutura condicional composta, onde


em sua primeira linha temos uma condição contida no comando SE, caso
esta condição for verdadeira são executados os comandos internos ao
ENTÃO, e os comandos internos ao SENÃO são desprezados até encontrar
o FIM-SE correspondente. Caso contrário, se a condição contida no
comando SE for falsa, os comandos internos ao ENTÃO são desprezados e

Prof. Lênin e Júnior www.estrategiaconcursos.com.br 59/91


Noções de Informática – ATA/MF
Teoria e questões comentadas
Prof. Lênin e Júnior – Aula 4

os comandos internos ao SENÃO são executados até encontrar o FIM-SE


correspondente.

Como x e y possuem o mesmo valor a condição SE é falsa então


executamos os comandos internos ao SENÃO. Neste caso

y  (2*x) + 2, aqui estamos atualizando o valor de y.

GABARITO: B.

13. (VUNESP/2013/IMESC-SP/INFORMÁTICA/Q.56) Considere


o algoritmo a seguir para responder à questão. Esse algoritmo está
expresso na forma denominada Português Estruturado (também
conhecida como pseudocódigo).

07409679409

Supondo que antes da execução do algoritmo, as variáveis x e y


possuam, respectivamente, os valores 7 e 8, pode-se afirmar que,
após a execução do algoritmo, a soma de x e y será:

a) -1

b) 7

c) 15

d) 16

Prof. Lênin e Júnior www.estrategiaconcursos.com.br 60/91


Noções de Informática – ATA/MF
Teoria e questões comentadas
Prof. Lênin e Júnior – Aula 4

e) 56

Comentários

Este é o mesmo caso da questão anterior, possuímos uma estrutura


condicional composta, porém agora a nossa condição SE é verdadeira,
pois temos valores diferentes contidos nas variáveis x e y. Neste caso os
comandos internos ao ENTÃO são executados, e os comandos internos ao
SENÃO são desprezados até encontrar o FIM-SE correspondente.

Dentro do primeiro comando ENTÃO vamos encontrar outra estrutura


condicional composta, e outro teste de condição do comando SE, onde o
algoritmo avalia Se (x>y), aqui vamos encontrar uma condição falsa, pois
x é menor do que y, neste caso o algoritmo continuará a sua sequencia
executando os comandos internos ao SENÃO desta estrutura condicional.
Teremos então a execução da linha x  x-y, onde x= -1.

Atênção agora, o enunciado da questão diz que APÓS A EXECUÇÃO DO


ALGORITMO a soma de x e y, onde x=-1 e y=8 é igual a 7.

Esta questão pode ter pêgo diversas pessoas que não estão atentas ao
enunciado, então como dica importante! Leia com atenção toda a questão
antes de resolvê-la.

GABARITO: B.

14. (IBFC/2013/HEMOMINAS/TÉCNICO EM INFORMÁTICA/Q.51)


O programa a seguir é tipicamente uma estrutura

07409679409

a) Repetição.

b) Sequencial.

c) Condicional.

d) Recursiva.

Comentários

Prof. Lênin e Júnior www.estrategiaconcursos.com.br 61/91


Noções de Informática – ATA/MF
Teoria e questões comentadas
Prof. Lênin e Júnior – Aula 4

O programa que foi demonstrado na questão é tipicamente uma estrutura


condicional composta, onde em sua primeira linha temos uma condição
contida no comando IF (SE), caso esta condição for verdadeira são
executados código verdadeiros (comandos internos ao ENTÃO), e os
código falsos (comandos internos ao SENÃO) são desprezados até
encontrar o FIM-SE correspondente, neste código indicado pelo último
caracterer } . Caso contrário, se a condição contida no comando IF (SE)
for falsa, os códigos verdadeirso (comandos internos ao ENTÃO) são
desprezados e os códigos falsos (comandos internos ao ELSE (SENÃO))
são executados até encontrar o FIM-SE correspondente.

GABARITO: C.

15. (CESPE/2013/CNJ/PROGRAMAÇÃO DE SISTEMAS/Q.26) No


algoritmo abaixo, se o valor de c for igual a 15, então o resultado será
igual a 59.

Comentários

Vamos resolver este algoritmo com o seguinte teste de mesa:


Linha Ação Variáveis Saída
2 Declaração c f
07409679409

6 Leia (c) 15 ?
7 F  (9*c+160)/5 15 59
8 Escreva (“Resultado:” f) 15 59 Resultado: 59

GABARITO: C.

16. (UFJF-COPESE/2012/UFJF/TÉCNICO DE INFORMAÇÃO/Q.49)


Leia e observe os dois trechos de código abaixo.

Prof. Lênin e Júnior www.estrategiaconcursos.com.br 62/91


Noções de Informática – ATA/MF
Teoria e questões comentadas
Prof. Lênin e Júnior – Aula 4

Assinale a opção que responda às seguintes perguntas: Os dois trechos


de código realizam a mesma funcionalidade? Se sim, existe alguma
diferença significativa entre eles?

a) Sim. Não existe diferença significativa.


b) Sim. O desempenho.
c) Não. Não podem ser comparados por realizarem funcionalidades
distintas.
d) Sim. A quantidade de variáveis utilizadas.
e) Sim. A variedade de comandos utilizados.

Comentários
Os dois trechos de código realizam a mesma funcionalidade, porém o
primeiro código tem um desempenho mais lento para chegar ao resultado,
pois ele precisa executar a terceira linha 1000 vezes, enquanto o 2º
código chega ao resultado executando apenas duas linhas.

GABARITO: B.

17. (CESPE/2011/TJ-ES/ANÁLISE DE SISTEMAS/Q.57) Com


relação aos fundamentos de programação, julgue os seguintes itens.

Em um laço de repetição, o controle do número de vezes que o laço


será repetido ocorre por meio de operadores lógicos.

Comentários

As estruturas de repetições possuem uma expressão lógica para ser


avaliada e determinar o fim de sua execução. 07409679409

No quadro abaixo temos um resumo destas estruturas.


RESUMO – ESTRUTURAS DE REPETIÇÃO

A- ENQUANTO B- REPITA C- PARA


Enquanto a condição for Os comandos internos a ele uma variável que controla o
VERDADEIRA, o conjunto de são executados ao menos início e o fim da execução
comandos é executado. uma vez, independente da PARA variável DE valor1 ATÉ
Se a condição é FALSA o condição valor2 PASSO valor3 FAÇA
conjunto NÃO é executado - O laço REPITA é realizado comando 1
somente se a condição for …
ENQUANTO < condição > FAÇA FALSA comando n

Prof. Lênin e Júnior www.estrategiaconcursos.com.br 63/91


Noções de Informática – ATA/MF
Teoria e questões comentadas
Prof. Lênin e Júnior – Aula 4

comando 1 FIM-PARA
comando n REPITA
FIM-ENQUANTO comando 1

comando n
ATÉ <condição>

GABARITO: E.

18. (CESPE/2011/TRE-ES/PROGRAMAÇÃO DE SISTEMAS/Q.51)


Com base no algoritmo max1 apresentado abaixo, que tem como
finalidade determinar o valor máximo de um vetor não vazio v[0... n-
1], julgue os itens a seguir.

O algoritmo max1 determina o valor máximo do vetor por meio de


uma solução recursiva.

Comentários

Um programa recursivo é um programa que chama a si mesmo, direta ou


indiretamente.
07409679409

Exemplo:

GABARITO: E.

Prof. Lênin e Júnior www.estrategiaconcursos.com.br 64/91


Noções de Informática – ATA/MF
Teoria e questões comentadas
Prof. Lênin e Júnior – Aula 4

19. (CESPE/2011/TRE-ES/PROGRAMAÇÃO DE SISTEMAS/Q.52)


Com base no algoritmo max1 apresentado abaixo, que tem como
finalidade determinar o valor máximo de um vetor não vazio v[0... n-
1], julgue os itens a seguir.

Em face do algoritmo, é correto afirmar que a troca de x=v[0] por x=0


não alterará o resultado do algoritmo.

Comentários

Caso ocorra a troca de x=v[0] por x=0 o resultado do algoritmo será


totalmente alterado. Quando estamos trabalhando com vetores, a forma
que temos para identificar um elemento é usando a nomenclatura, nome
do vetor e a identificação do elemento (índice) entre colchetes.

Por Exemplo, caso você queira ler o terceiro elemento do vetor teremos:
v[3].

Obs.: A única maneira da troca de x=v[0] por x=0 não alterar o resultado
do algoritmo é se o elemento do vetor com índice 0 (v[0]) for igual a zero.

GABARITO: E.

07409679409

20. (CESPE/2011/TJ-ES/ANÁLISE DE SISTEMAS/Q.58) Com


relação aos fundamentos de programação, julgue os seguintes itens.

Em uma estrutura de repetição com variável de controle, ou estrutura


para, a verificação da condição é realizada antes da execução do corpo
da sentença, o que impede a reescrita desse tipo de estrutura por meio
de estrutura de repetição pós-testada.

Comentários

O comando para...faça também permite a descrição, dentro de um


algoritmo, de uma estrutura de repetição. Sua forma geral é:

Prof. Lênin e Júnior www.estrategiaconcursos.com.br 65/91


Noções de Informática – ATA/MF
Teoria e questões comentadas
Prof. Lênin e Júnior – Aula 4

para <variável de controle> de <valor inicial> até <valor final> [passo <incremento>] faça

<lista de comandos>

Fim-para

Na estrutura para..faça, a variável de controle é inicializada com <valor


inicial> e no início de cada iteração, seu valor é comparado com <valor
final>. Se o valor da variável for menor ou igual a <valor final>, a lista
de comandos é executada e após ser executado o último comando da
lista, a variável de controle é incrementada. Isto repete-se até que o valor
da variável de controle seja maior que <valor final>, quando então é
executado o comando imediatamente após a palavra fim-para. A
instrução passo é necessária se o incremento for diferente de 1.

É possível a reescrita desse tipo de estrutura por meio de estrutura de


repetição pós-testada, bastando a adaptação da variável de controle.

GABARITO: E.

21. (FCC/2010/TRF - 4ª REGIÃO/Analista Judiciário) Considere:

07409679409

Prof. Lênin e Júnior www.estrategiaconcursos.com.br 66/91


Noções de Informática – ATA/MF
Teoria e questões comentadas
Prof. Lênin e Júnior – Aula 4

Dado o algoritmo representado na forma de português estruturado,


o valor de saída contido na variável RESP será

a) 342.

b) 6.

c) 22.

d) 86.

e) 0.

Comentários

Para resolver este tipo de questão, quando a banca apresenta um


algoritmo com repetições e cálculos, temos duas opções.

1) Realizamos o “teste de mesa” para apurar o resultado, ou seja


executamos o algoritmo manualmente anotando os valores das
variáveis no decorrer da execução.

2) Analisamos o algoritmo para encontrar o problema que ele resolve.


Assim obtemos uma fórmula para calcular o resultado do algoritmo
em função dos valores de entrada.

Minha sugestão é para que você decida o caminho para a solução da


questão com base na quantidade de repetições que serão efetuadas.
Adote como padrão a primeira opção, que é a mais segura. Mas, se o
número de repetições for grande, então você precisará de muito tempo
para resolver (pode até ser que o tempo de prova seja insuficiente).
Nestes casos, procure realizar algumas simulações para buscar a fórmula
07409679409

que o algoritmo implementa.

No caso da questão acima, observe que ela possui duas estruturas de


repetição. A quantidade de execuções da primeira depende de N e o
número de execuções da segunda depende da primeira. Como N é
pequeno, sem maiores análises, provavelmente a quantidade de
repetições será pequena. Como N é igual a 4, a primeira repetição será
executada de 2 a 4, com passo 2. Neste caso, a variável CONTA assumirá
os valores 2 e 4, na primeira e segunda repetições, respectivamente.
Então, a segunda repetição – interna à primeira – será executada 2 vezes.
Uma para CONTA = 2 e outra para CONTA = 4. Note que para esta
repetição o passo é 1, ou seja, na primeira vez será executada de 1 a 1

Prof. Lênin e Júnior www.estrategiaconcursos.com.br 67/91


Noções de Informática – ATA/MF
Teoria e questões comentadas
Prof. Lênin e Júnior – Aula 4

(CONTA-1) e na segunda vez de 1 a 3 (CONTA-1). Total de repetições


para CONTB = 4 (1 repetição para CONTA = 2 e 3 repetições para CONTA
= 4). Concluímos que a quantidade de repetições é pequena, podemos
fazer o teste de mesa.

OBSERVAÇÃO: quando for fazer a prova, não há necessidade de fazer


todos estes cálculos. Observe apenas se as repetições são grandes e se
existem muitas repetições aninhadas.

Apresento uma variação do teste de mesa mostrado na aula.

Pass N X CONTA EXP CONTA RESP


o B
1) 4
2) 2
3) 2
4) 2
5) 2
6) 1
7) 1
8) 2*2=4
9) 2+4=6
10) 2+2=4
11) 2
12) 1
07409679409

13) 1
14) 2*2=4
15) 2
16) 4*2=8
17) 3
18) 8*2=1
6
19) 6+16=
22

Prof. Lênin e Júnior www.estrategiaconcursos.com.br 68/91


Noções de Informática – ATA/MF
Teoria e questões comentadas
Prof. Lênin e Júnior – Aula 4

GABARITO: C.

22. (CESPE/2009/ANAC/Analista Administrativo/Tecnologia da


Informação) 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.

Comentários

A estrutura de repetição com interrupção no final, “repita...até”, executa


os comandos uma vez antes de avaliar a condição de interrupção. Neste
caso, não é possível que o bloco de comandos não seja executado (“zero
vezes” como afirma questão).

GABARITO: E.

23. (CESPE/2010/BANCO DA AMAZÔNIA/Técnico Científico —


Área: Tecnologia da Informação) Na programação estruturada,
existem estruturas de sequência, de decisão e de iteração. No primeiro
tipo, uma tarefa é executada após a outra, linearmente. No segundo, a
partir de um teste lógico, determinado trecho de código é executado,
ou não. No terceiro, a partir de um teste lógico, determinado trecho de
código é repetido por um número finito de vezes.
07409679409

Comentários

Segundo a programação estruturada, um programa é composto por


sequência de instruções ordenadas de forma lógica para a resolução de
uma determinada tarefa ou problema.

Na estrutura de sequência os comandos deverão ser executados numa


sequência linear, seguindo-se o texto em que estão escritos, de cima para
baixo, se não houver indicação em contrário.

Prof. Lênin e Júnior www.estrategiaconcursos.com.br 69/91


Noções de Informática – ATA/MF
Teoria e questões comentadas
Prof. Lênin e Júnior – Aula 4

A estrutura condicional permite a escolha do grupo de ações e estruturas


a ser executado quando determinadas condições (expressões lógicas) são
ou não satisfeitas. Esta estrutura pode se apresentar de duas formas:
 Estrutura Condicional Simples;

 Estrutura Condicional Composta.

Estrutura condicional Simples (Se ... então)

07409679409

Prof. Lênin e Júnior www.estrategiaconcursos.com.br 70/91


Noções de Informática – ATA/MF
Teoria e questões comentadas
Prof. Lênin e Júnior – Aula 4

Estrutura Condicional Composta

A estrutura de repetição permite que uma sequência de comandos seja


executada repetidamente até que uma determinada condição não seja
satisfeita. Existem diferentes formas de avaliar a condição em estruturas
de repetição.

GABARITO: C.

24. (CESPE/2009/ANAC/Analista Administrativo/Tecnologia da


Informação) Um array é um agregado, possivelmente heterogêneo,
de elementos de dados. Nele, um elemento individual é identificado por
07409679409

sua posição em relação ao primeiro.

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

Prof. Lênin e Júnior www.estrategiaconcursos.com.br 71/91


Noções de Informática – ATA/MF
Teoria e questões comentadas
Prof. Lênin e Júnior – Aula 4

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

GABARITO: E.

25. (FCC/2010/TRE-AM/Analista Judiciário/Tecnologia da


Informação) Em subprogramação,

a) na modularização de um programa, as partes que o compõe podem


ser desenvolvidas por diferentes equipes, sem necessidade de
estabelecimento prévio de padrões de programação.

b) um identificador, uma lista de parâmetros para possibilitar a


comunicação com outros procedimentos e as ações que nele serão
executadas constituem a essência da criação de um procedimento.

c) um objeto é dito global quando sua definição estiver dentro de um


procedimento ou quando for declarado como parâmetro formal do
procedimento.

d) na passagem de parâmetros por referência, o parâmetro real é


passado para o parâmetro formal, fazendo com que todas as ações do
procedimento manipulem somente as referências, evitando a alteração
do valor original.

e) na passagem de parâmetros por valor, a relação existente entre os


parâmetros formal e real está no conteúdo dos parâmetros e não em
seu endereço.

Comentários

a) ERRADO. Apesar de ser uma das vantagens da modularização, a


07409679409

implementação dos módulos depende de uma definição de padrões para


que os módulos construídos possam se transformar em uma unidade de
programa.

b) Correto. São estes os itens essenciais de um módulo.

c) ERRADO. Local é o item declarado como parâmetro formal ou


internamente ao módulo.

d) ERRADO. A passagem de parâmetros por referência faz com que uma


referência (ligação, apontador) seja o item passado para o parâmetro

Prof. Lênin e Júnior www.estrategiaconcursos.com.br 72/91


Noções de Informática – ATA/MF
Teoria e questões comentadas
Prof. Lênin e Júnior – Aula 4

formal. Assim, qualquer alteração no parâmetro formal afeta o parâmetro


real.

e) ERRADO. Na passagem de parâmetros por valor, o valor do parâmetro


real é atribuído ao parâmetro formal. Mas observe que o parâmetro formal
possui um endereço de memória (e se o parâmetro real for uma variável
também possuirá endereço), mesmo não sendo informado o endereço de
memória do parâmetro real para o parâmetro formal. Quando realizamos
uma atribuição, o valor é obtido fazendo uma cópia do conteúdo que está
no endereço da variável!

GABARITO: B.

26. (CESPE/2009/ANAC/Analista Administrativo/Tecnologia da


Informação). 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.

Comentários

Na passagem de parâmetro por valor, não há ligação entre as variáveis


(real e formal). Apenas o valor da variável real é copiado para a variável
formal. Item correto.

GABARITO: C.

27. (CESPE/2010/TRE-MT/Analista 07409679409


Judiciário/Tecnologia da
Informação) Considere o algoritmo em que é feita uma passagem de
argumentos por referência, em que V[ ] é um vetor de inteiros e X e Y
são valores inteiros.

Prof. Lênin e Júnior www.estrategiaconcursos.com.br 73/91


Noções de Informática – ATA/MF
Teoria e questões comentadas
Prof. Lênin e Júnior – Aula 4

Com respeito ao algoritmo acima, assinale a opção correta.

a) A função recursiva f1 retorna a quantidade de valores zero que existem


desde a posição X até a posição Y do vetor V.

b) A chamada f1(vet,8,1) leva a uma execução infinita, qualquer que seja


o vetor vet passado como parâmetro.

c) Considere vet um vetor que contenha os valores [1,2,3,4,5,6,7,8,9,10]


e a chamada da função f1(vet,1,5). A alteração da linha 5 para retorne 1
+ f1(V, X+1, Y+1) não alteraria o resultado da execução da função.

d) Considerando as características da função f1, não é possível


implementá-la sem o uso de recursividade.

e) A garantia de que a função recursiva não será infinitamente executada


está implementada exclusivamente no trecho do algoritmo que
07409679409

compreende da linha 10 à linha 14.

Comentários

a) A rotina não considera a posição Y na verificação. Observe que, quando


X = Y, a função retorna 0, ou seja, mesmo se o elemento da posição Y de
V for 0, ele não será contado. A função, então, retorna a quantidade de
zeros em V da posição X até a posição Y-1. Item ERRADO.

Prof. Lênin e Júnior www.estrategiaconcursos.com.br 74/91


Noções de Informática – ATA/MF
Teoria e questões comentadas
Prof. Lênin e Júnior – Aula 4

b) A chamada f1(vet,8,1) leva à execução da linha 11, trocando 8 e 1 de


lugar em uma nova chamada: f1(vet, 1, 8). Daí, a função cumpre seu
papel normalmente. Item ERRADO.

c) A alteração proposta neste item não afetará o resultado, considerando-


se o vetor e a chamada descritos. Isto porque a linha alterada não será
executada, uma vez que não existe elemento com valor 0 no vetor. Item
CERTO.

d) É possível implementar a função iterativamente. Basta criar um laço


para comparar os elementos de X até Y-1. Item ERRADO.

e) Não podemos desconsiderar que existem outras chamadas recursivas


(linhas 5 e 7), onde, dependendo da forma como os parâmetros forem
passados, poderá causar uma execução infinita. Item ERRADO.

GABARITO: C.

07409679409

Prof. Lênin e Júnior www.estrategiaconcursos.com.br 75/91


Noções de Informática – ATA/MF
Teoria e questões comentadas
Prof. Lênin e Júnior – Aula 4

4. LISTA DAS QUESTÕES UTILIZADAS NA AULA.

01. (ESAF/2009/ANA/DESENVOLVIMENTO DE SISTEMAS/Q.26)


Na programação estruturada, são necessários apenas três blocos de
formas de controle para implementar algoritmos. São eles:

a) seleção, repetição e aninhamento.

b) empilhamento, aninhamento e operação.

c) sequência, aninhamento e seleção.

d) sequência, seleção e repetição.

e) função, operação e programa.

02. (ESAF/2008/Prefeitura de Natal - RN/Auditor do Tesouro


Municipal - Tecnologia da Informação) Analise as seguintes
afirmações relacionadas a conceitos básicos sobre Programação:

I. Um procedimento é um conjunto de comandos para uma tarefa


específica referenciada por um nome no algoritmo principal, retornando
um determinado valor no seu próprio nome.

II. Podem-se inserir módulos em um algoritmo. Para isso, pode-se


utilizar "Procedimentos" ou "Funções". As ações das "Funções" e dos
"Procedimentos" são hierarquicamente subordinadas a um módulo
principal.

III. Cada "Função" ou "Procedimento" pode utilizar constantes ou


07409679409

variáveis do módulo principal ou definir suas próprias constantes ou


variáveis.

IV. Uma variável global indica o endereço onde um valor é armazenado


na memória do computador enquanto um ponteiro representa um valor
numérico real.

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

a) I e II.

b) II e III.

Prof. Lênin e Júnior www.estrategiaconcursos.com.br 76/91


Noções de Informática – ATA/MF
Teoria e questões comentadas
Prof. Lênin e Júnior – Aula 4

c) III e IV.

d) I e III.

e) II e IV.

03. (ESAF/2008/STN/DESENVOLVIMENTO DE SISTEMAS) Para


resolver um determinado problema, um programador tem em mente
como deve ser o programa principal que, por sua vez, controlará todas
as outras tarefas distribuídas em sub-rotinas, para as quais deverá
desenvolver os respectivos algoritmos. Este cenário exemplifica o
conceito de programação

a) estruturada.

b) orientada a objetos.

c) funcional.

d) numérica.

e) orientada a aspectos.

04. (ESAF/2007/SEFAZ-CE-TI) Quando uma função é definida em


termos de si mesma fica caracterizado o uso

a) da recursividade.

b) da iteratividade. 07409679409

c) da interatividade.

d) do acesso direto a Banco de Dados.

e) de DLLs.

05. (FCC/2013/MPAMD/A.APOIO-PROGRAMADOR/Q.44)
Considere o programa em pseudocódigo abaixo:

Prof. Lênin e Júnior www.estrategiaconcursos.com.br 77/91


Noções de Informática – ATA/MF
Teoria e questões comentadas
Prof. Lênin e Júnior – Aula 4

É correto afirmar:

a) Como o programa utiliza o comando enquanto ao invés do comando


para, não seria necessário incrementar a variável de controle índice
dentro do bloco, uma vez que esta é incrementada de 1
automaticamente.
07409679409

b) O resultado do cálculo da comissão do vendedor é atribuído à


variável comissão e corresponde a 1% do valor da venda realizada
por ele.
c) O valor da variável vendas é atribuído ao vetor comissão na posição
do vetor correspondente ao valor do índice relacionado ao vendedor.
d) O segundo comando enquanto percorre novamente os vetores,
começando do índice 1, incrementando a variável índice e
mostrando os dados dos vendedores: nome e comissão.

Prof. Lênin e Júnior www.estrategiaconcursos.com.br 78/91


Noções de Informática – ATA/MF
Teoria e questões comentadas
Prof. Lênin e Júnior – Aula 4

e) O primeiro comando enquanto faz com que o fluxo do programa


seja repetido até que a variável índice fique menor que 10, ou seja,
esse bloco de comandos vai ser repetido 10 vezes.

06. (FCC/2013/MPAMD/A.APOIO-PROGRAMADOR/Q.45)
Considere o vetor vet a seguir:

Após a execução dos seguintes comandos de atribuição:

aux vet[8]

vet[8] vet [1]

vet[4] vet[6]

vet[6] vet[3]

vet[3] vet[1] aux

A configuração do vetor (do índice 1 ao 8) será

a) ZONAAMAS
b) AMASZONA
c) SMAZONAS
d) AMASSONA
e) AMAZONAS 07409679409

07. (FCC/2013/ALE-RN/PROGRAMADOR/Q.46) Considere o


algoritmo na forma de pseudocódigo a seguir:

Prof. Lênin e Júnior www.estrategiaconcursos.com.br 79/91


Noções de Informática – ATA/MF
Teoria e questões comentadas
Prof. Lênin e Júnior – Aula 4

O pseudocódigo acima

a) está incorreto, pois a estrutura de seleção se necessita da cláusula


então para o caso da condição ser verdadeira e da cláusula senão
para caso da condição ser falsa.
b) está correto, e seu objetivo é classificar em ordem crescente, o
conteúdo de um vetor que recebe 4 valores inteiros lidos.
07409679409

c) está correto, e seu objetivo é ler 4 elementos e procurar um


elemento informado no vetor utilizando busca binária.
d) está incorreto, pois em todas as linguagens de programação a
primeira posição do vetor é 1 e não 0 como mostra o algoritmo.
e) está correto, e se forem lidos os valores 4, 7, 1, 9 e 3, nesta ordem,
serão exibidos os valores 9, 7, 4, 3 e 1, nesta ordem.

Prof. Lênin e Júnior www.estrategiaconcursos.com.br 80/91


Noções de Informática – ATA/MF
Teoria e questões comentadas
Prof. Lênin e Júnior – Aula 4

08. (FCC/2013/DPE-SP/PROGRAMADOR/Q.53) O algoritmo a


seguir utiliza palavras do nosso idioma para representar a resolução
lógica de um problema computacional:

O pseudocódigo apresentado

a) calcula o fatorial de cada número lido e armazena em um vetor em


ordem decrescente.
b) está incorreto, pois qualquer vetor de inteiros em todas as
linguagens de programação começam pela posição (índice) 1.
c) está incorreto, pois se forem digitados para n os valores 3, 8, 1, 9 e
4, um laço infinito será gerado.
d) classifica em ordem crescente os valores armazenados em um
07409679409

vetor.
e) armazena 5 valores em um vetor e, em seguida, procura pelo maior
valor armazenado.

09. (FCC/2013/TRT9/TECNOLOGIA DA INFORMAÇÃO/Q.33)


Analise o algoritmo em pseudo código abaixo:

início

real: n1, n2;

Prof. Lênin e Júnior www.estrategiaconcursos.com.br 81/91


Noções de Informática – ATA/MF
Teoria e questões comentadas
Prof. Lênin e Júnior – Aula 4

imprima(“Digite a primeira nota: ”);

leia(n1);

imprima(“Digite a segunda nota: ”);

leia(n2);

se

então

media (n1+n2)/2;

imprima (“A media das notas é ”, medi

senão

imprima(“Alguma nota fornecida é inválida.”);

fim se;

fim.

Considerando que uma nota válida deve possuir valores entre 0 e 10


(inclusive), a lacuna que corresponde à condição do comando SE é
corretamente preenchida por

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


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

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


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

10. (CESPE/2013/TRT17/TECNOLOGIA DA INFORMAÇÃO/Q.106)


São exemplos de constantes literais "NOME", "Abacaxi", "falso",
"304958" e "23/12/99".

Prof. Lênin e Júnior www.estrategiaconcursos.com.br 82/91


Noções de Informática – ATA/MF
Teoria e questões comentadas
Prof. Lênin e Júnior – Aula 4

11. (CESPE/2013/TRT17/TECNOLOGIA DA INFORMAÇÃO/Q.107)


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

12. (VUNESP/2013/IMESC-SP/INFORMÁTICA/Q.55) Considere


o algoritmo a seguir para responder à questão. Esse algoritmo está
expresso na forma denominada Português Estruturado (também
conhecida como pseudocódigo).

Considerando que, antes da execução do algoritmo, x e y possuam o


07409679409

mesmo valor, pode-se afirmar que, após a execução do algoritmo,

a) somente o valor da variável x terá sido atualizado.

b) somente o valor da variável y terá sido atualizado.

c) os valores das variáveis x e y terão sido atualizados, apenas uma vez


cada.

d) os valores das variáveis x e y terão sido atualizados, sendo que o de y


apenas uma vez, e o de x, duas vezes.

Prof. Lênin e Júnior www.estrategiaconcursos.com.br 83/91


Noções de Informática – ATA/MF
Teoria e questões comentadas
Prof. Lênin e Júnior – Aula 4

e) nenhuma variável terá sido alterada, pois essa condição não está
prevista no algoritmo apresentado.

13. (VUNESP/2013/IMESC-SP/INFORMÁTICA/Q.56) Considere


o algoritmo a seguir para responder à questão. Esse algoritmo está
expresso na forma denominada Português Estruturado (também
conhecida como pseudocódigo).

Supondo que antes da execução do algoritmo, as variáveis x e y possuam,


respectivamente, os valores 7 e 8, pode-se afirmar que, após a execução
do algoritmo, a soma de x e y será:

a) -1

b) 7

c) 15
07409679409

d) 16

e) 56

14. (IBFC/2013/HEMOMINAS/TÉCNICO EM INFORMÁTICA/Q.51)


O programa a seguir é tipicamente uma estrutura

Prof. Lênin e Júnior www.estrategiaconcursos.com.br 84/91


Noções de Informática – ATA/MF
Teoria e questões comentadas
Prof. Lênin e Júnior – Aula 4

a) Repetição.

b) Sequencial.

c) Condicional.

d) Recursiva.

15. (CESPE/2013/CNJ/PROGRAMAÇÃO DE SISTEMAS/Q.26) No


algoritmo abaixo, se o valor de c for igual a 15, então o resultado será
igual a 59.

16. (UFJF-COPESE/2012/UFJF/TÉCNICO DE INFORMAÇÃO/Q.49)


Leia e observe os dois trechos de código abaixo.

07409679409

Assinale a opção que responda às seguintes perguntas: Os dois trechos de


código realizam a mesma funcionalidade? Se sim, existe alguma diferença
significativa entre eles?

a) Sim. Não existe diferença significativa.


b) Sim. O desempenho.
c) Não. Não podem ser comparados por realizarem funcionalidades
distintas.
d) Sim. A quantidade de variáveis utilizadas.
e) Sim. A variedade de comandos utilizados.

Prof. Lênin e Júnior www.estrategiaconcursos.com.br 85/91


Noções de Informática – ATA/MF
Teoria e questões comentadas
Prof. Lênin e Júnior – Aula 4

17. (CESPE/2011/TJ-ES/ANÁLISE DE SISTEMAS/Q.57) Com


relação aos fundamentos de programação, julgue os seguintes itens.

Em um laço de repetição, o controle do número de vezes que o laço será


repetido ocorre por meio de operadores lógicos.

18. (CESPE/2011/TRE-ES/PROGRAMAÇÃO DE SISTEMAS/Q.51)


Com base no algoritmo max1 apresentado abaixo, que tem como
finalidade determinar o valor máximo de um vetor não vazio v[0... n-
1], julgue os itens a seguir.

O algoritmo max1 determina o valor máximo do vetor por meio de uma


solução recursiva.

19. (CESPE/2011/TRE-ES/PROGRAMAÇÃO DE SISTEMAS/Q.52)


Com base no algoritmo max1 apresentado abaixo, que tem como
finalidade determinar o valor máximo de um vetor não vazio v[0... n-
1], julgue os itens a seguir.

07409679409

Em face do algoritmo, é correto afirmar que a troca de x=v[0] por x=0


não alterará o resultado do algoritmo.

20. (CESPE/2011/TJ-ES/ANÁLISE DE SISTEMAS/Q.58) Com


relação aos fundamentos de programação, julgue os seguintes itens.

Prof. Lênin e Júnior www.estrategiaconcursos.com.br 86/91


Noções de Informática – ATA/MF
Teoria e questões comentadas
Prof. Lênin e Júnior – Aula 4

Em uma estrutura de repetição com variável de controle, ou estrutura


para, a verificação da condição é realizada antes da execução do corpo da
sentença, o que impede a reescrita desse tipo de estrutura por meio de
estrutura de repetição pós-testada.

21. (FCC/2010/TRF - 4ª REGIÃO/Analista Judiciário) Considere:

Dado o algoritmo representado na forma de português estruturado, o


valor de saída contido na variável RESP será

a) 342.

b) 6.

c) 22. 07409679409

d) 86.

e) 0.

22. (CESPE/2009/ANAC/Analista Administrativo/Tecnologia da


Informação) 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

Prof. Lênin e Júnior www.estrategiaconcursos.com.br 87/91


Noções de Informática – ATA/MF
Teoria e questões comentadas
Prof. Lênin e Júnior – Aula 4

de comandos seja executado zero, uma ou mais vezes, de acordo com


uma condição que será avaliada a cada iteração.

23. (CESPE/2010/BANCO DA AMAZÔNIA/Técnico Científico —


Área: Tecnologia da Informação) Na programação estruturada,
existem estruturas de sequência, de decisão e de iteração. No primeiro
tipo, uma tarefa é executada após a outra, linearmente. No segundo, a
partir de um teste lógico, determinado trecho de código é executado,
ou não. No terceiro, a partir de um teste lógico, determinado trecho de
código é repetido por um número finito de vezes.

24. (CESPE/2009/ANAC/Analista Administrativo/Tecnologia da


Informação) 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.

25. (FCC/2010/TRE-AM/Analista Judiciário/Tecnologia da


Informação) Em subprogramação,

a) na modularização de um programa, as partes que o compõe podem


ser desenvolvidas por diferentes equipes, sem necessidade de
estabelecimento prévio de padrões de programação.
07409679409

b) um identificador, uma lista de parâmetros para possibilitar a


comunicação com outros procedimentos e as ações que nele serão
executadas constituem a essência da criação de um procedimento.

c) um objeto é dito global quando sua definição estiver dentro de um


procedimento ou quando for declarado como parâmetro formal do
procedimento.

d) na passagem de parâmetros por referência, o parâmetro real é


passado para o parâmetro formal, fazendo com que todas as ações do
procedimento manipulem somente as referências, evitando a alteração
do valor original.

Prof. Lênin e Júnior www.estrategiaconcursos.com.br 88/91


Noções de Informática – ATA/MF
Teoria e questões comentadas
Prof. Lênin e Júnior – Aula 4

e) na passagem de parâmetros por valor, a relação existente entre os


parâmetros formal e real está no conteúdo dos parâmetros e não em
seu endereço.

26. (CESPE/2009/ANAC/Analista Administrativo/Tecnologia da


Informação). 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.

27. (CESPE/2010/TRE-MT/Analista Judiciário/Tecnologia da


Informação) Considere o algoritmo em que é feita uma passagem de
argumentos por referência, em que V[ ] é um vetor de inteiros e X e Y
são valores inteiros.

07409679409

Com respeito ao algoritmo acima, assinale a opção correta.

a) A função recursiva f1 retorna a quantidade de valores zero que existem


desde a posição X até a posição Y do vetor V.

b) A chamada f1(vet,8,1) leva a uma execução infinita, qualquer que seja


o vetor vet passado como parâmetro.

Prof. Lênin e Júnior www.estrategiaconcursos.com.br 89/91


Noções de Informática – ATA/MF
Teoria e questões comentadas
Prof. Lênin e Júnior – Aula 4

c) Considere vet um vetor que contenha os valores [1,2,3,4,5,6,7,8,9,10]


e a chamada da função f1(vet,1,5). A alteração da linha 5 para retorne 1
+ f1(V, X+1, Y+1) não alteraria o resultado da execução da função.

d) Considerando as características da função f1, não é possível


implementá-la sem o uso de recursividade.

e) A garantia de que a função recursiva não será infinitamente executada


está implementada exclusivamente no trecho do algoritmo que
compreende da linha 10 à linha 14.

07409679409

Prof. Lênin e Júnior www.estrategiaconcursos.com.br 90/91


Noções de Informática – ATA/MF
Teoria e questões comentadas
Prof. Lênin e Júnior – Aula 4

5. GABARITO.

GABARITO

01 02 03 04 05 06 07 08 09 10

D B A A D E B D D C

11 12 13 14 15 16 17 18 19 20

E B B C C B E E E E

21 22 23 24 25 26 27 28 29 30

C E C E B C C

07409679409

Prof. Lênin e Júnior www.estrategiaconcursos.com.br 91/91

Você também pode gostar