Você está na página 1de 74

Aula 06

Tecnologia da Informação p/ ICMS/SP - 2017 (Gestão Tributária)

Professor: Victor Dalton


Tecnologia da Informação para ICMS/SP 2017
Agente Fiscal de Rendas Gestão Tributária
Prof Victor Dalton Aula 06

AULA 06: Programação

SUMÁRIO PÁGINA
1. Conceitos Básicos 2
2. Estruturas de Controle 17
3. Programação orientada a objetos 27
Exercícios comentados 31
Considerações Finais 59
Exercícios 60
Gabarito 73

Olá amigos e amigas! Vamos quebrar a rotina?

Nosso assunto de hoje é Programação. Acho um assunto mais leve de ser


estudado, sem aquele “massacre” do decoreba dos frameworks.

Estamos juntos?

Observação importante: este curso é protegido por direitos


autorais (copyright), nos termos da Lei 9.610/98, que altera,
atualiza e consolida a legislação sobre direitos autorais e dá
outras providências.

Grupos de rateio e pirataria são clandestinos, violam a lei e


prejudicam os professores que elaboram os cursos. Valorize o
trabalho de nossa equipe adquirindo os cursos honestamente
através do site Estratégia Concursos ;-)

Prof. Victor Dalton


www.estrategiaconcursos.com.br 1 de 73
Tecnologia da Informação para ICMS/SP 2017
Agente Fiscal de Rendas Gestão Tributária
Prof Victor Dalton Aula 06
PROGRAMAÇÃO

1. Conceitos Básicos

1.1 Lógica de Programação

A Lógica é um ramo da filosofia centrada no raciocínio. Na computação, a


Lógica de Programação é a técnica de encadear pensamentos, com o objetivo
de atingir determinado objetivo.

Toda e qualquer atividade, por mais intuitiva que nos pareça, pode ser
organizada em uma sequência lógica de passos. Por exemplo, para acessar um
curso completo em PDFs aqui no Estratégia, você precisa:

1.Ligar o computador;
2.Abrir o navegador de Internet;
3.Acessar o site do Estratégia;
4.Selecionar o curso;
5.Confirmar a compra;
6.Se não for usuário cadastrado do site, preencher cadastro;
7.Realizar o pagamento;
8.Acessar os PDFs.

Sem maiores aprofundamentos, organizei alguns procedimentos para a


compra de um curso. Concorda comigo? Estando de acordo, experimente,
mentalmente, trocar alguns passos de lugar. A tarefa fica sem sentido, não é
mesmo? Perde o sentido, porque perde-se a lógica!

A lógica de uma determinada tarefa ou atividade é centrada em um


algoritmo.

Um algoritmo é uma sequência finita de passos que levam à execução


de determinada tarefa ou conjunto de tarefas.

Por exemplo, um algoritmo que calcule a média entre dois números inteiros
deverá:

1. Ler dois números inteiros;


2. Realizar uma soma entre os números;
3. Dividir por dois o número obtido anteriormente;
4. Escrever o resultado.

Prof. Victor Dalton


www.estrategiaconcursos.com.br 2 de 73
Tecnologia da Informação para ICMS/SP 2017
Agente Fiscal de Rendas Gestão Tributária
Prof Victor Dalton Aula 06
Tudo bem até agora?

Os algoritmos são definidos por cinco características. São elas:

 Finitude: um algoritmo tem de terminar ao fim de um número finito


de passos;
 Clareza/definição: cada passo do algoritmo tem de ser definido com
precisão, sem ambiguidades;
 Entrada: um algoritmo pode ter zero ou mais entradas;
 Saídas: um algoritmo tem uma ou mais saídas;
 Eficácia/efetividade: todas as operações feitas por um algoritmo
têm de ser suficientemente básicas.

Algoritmo

Na computação, é comum a escrita de algoritmos em uma linguagem


comum, que seja independente de linguagem de programação. Esta linguagem se
chama pseudocódigo, ou portugol.

Exemplo de pseudocódigo:

Algoritmo que lê o nome e as quatro notas bimestrais de um aluno. Em


seguida, calcula e escreve a média obtida:

ALGORITMO MEDIA_FINAL;
VAR NOTA1, NOTA2, NOTA3, NOTA4, MEDIA: INTEIRO;
NOME: CARACTERE [35]
INICIO
LER (NOME);
LER (NOTA1, NOTA2, NOTA3, NOTA4);
MEDIA:= (NOTA1 + NOTA2 + NOTA3 + NOTA4) / 4;
ESCREVER (NOME, MEDIA)
FIM.

Opa, veio muita informação ao mesmo tempo nesse algoritmo? Não se


preocupe, iremos detalhar as características dele para você. Mas acho que você
já percebeu que o pseudocódigo é um intermediário entre a linguagem natural e
a linguagem de programação. Quando um algoritmo é traduzido para uma

Prof. Victor Dalton


www.estrategiaconcursos.com.br 3 de 73
Tecnologia da Informação para ICMS/SP 2017
Agente Fiscal de Rendas Gestão Tributária
Prof Victor Dalton Aula 06
linguagem de programação propriamente dita, como C, C#, Pascal, Java, etc...
ele passa a se chamar Programa. Mas continuemos a estudar o algoritmo!

1.2 Formas de representação de um algoritmo

Existem diversas formas de representação de algoritmos, e a utilização de


determinada forma dependerá da situação, do público alvo e do nível de detalhe
requerido, dentre outros.

A descrição narrativa descreve o algoritmo em linguagem natural. Foi a


forma que eu utilizei para iniciar a aula, explicando como se adquire um curso no
Estratégia. Vamos escrever um algoritmo para calcular a média de dois números:

1.Digite o primeiro número;


2.Digite o segundo número;
3.Caso os dois números sejam iguais a zero, volte ao passo 1;
4.Some os dois números e divida por 2;
5.Imprima o resultado encontrado.

Uma outra forma de representar um algoritmo é a utilização de um


fluxograma, ou diagrama de blocos.

Conheça alguns símbolos dessa metodologia:

FLUXO DE DADOS
Indica o sentido do fluxo de dados. Conecta os
demais símbolos

TERMINAL
Indica o INÍCIO ou FIM de um processamento
Exemplo: Início do algoritmo

PROCESSAMENTO
Processamento em geral
Exemplo: Calculo de dois números

ENTRADA/SAÍDA (Genérica)
Operação de entrada e saída de dados
Exemplo: Leitura e Gravação de Arquivos

SAÍDA

Prof. Victor Dalton


www.estrategiaconcursos.com.br 4 de 73
Tecnologia da Informação para ICMS/SP 2017
Agente Fiscal de Rendas Gestão Tributária
Prof Victor Dalton Aula 06
Mostra informações ou resultados

DECISÃO
Permite elaborar processos de decisão

Poderíamos escrever aquele mesmo algoritmo que calcula a média de dois


números utilizando essa representação. Seria algo parecido com:

Inicio

Digite numero n1

Digite numero n2

SIM
n1 &
n2 =
NÃO 0?

Some n1 e n2 e divida por 2

Imprima o resultado

Fim

A terceira forma de representar um algoritmo é a linguagem estruturada,


também chamada de pseudocódigo ou portugol. É a forma que mais
trabalharemos nessa apostila.

1.3 Elementos de um algoritmo


Prof. Victor Dalton
www.estrategiaconcursos.com.br 5 de 73
Tecnologia da Informação para ICMS/SP 2017
Agente Fiscal de Rendas Gestão Tributária
Prof Victor Dalton Aula 06

Variável

Variável é um espaço da memória do computador que armazena um dado.


No algoritmo, a variável pode ser manipulada pelas instruções, modificando e
trabalhando seus valores.

Uma variável recebe um nome (também chamado de identificador), que a


diferencia das demais, no algoritmo. Normalmente atribui-se um nome intuitivo à
variável, para facilitar o entendimento do próprio algoritmo.

Destacarei as variáveis no algoritmo já visto:

ALGORITMO MEDIA_FINAL;
VAR NOTA1, NOTA2, NOTA3, NOTA4, MEDIA: INTEIRO; (tipo de variável,
número inteiro)
NOME: CARACTERE [35]; (tipo de variável, texto até 35 caracteres)
INICIO
LER (NOME);
LER (NOTA1, NOTA2, NOTA3, NOTA4);
MEDIA:= (NOTA1 + NOTA2 + NOTA3 + NOTA4) / 4;
ESCREVER (NOME, MEDIA)
FIM.

Constante

Constante, conforme o próprio nome diz, difere da variável por não permitir
modificação em seus valores pelo algoritmo.

ALGORTIMO AREA_CIRCUNFERENCIA;
CONST PI = 3.1416;
VAR RAIO, AREA: REAL;
INICIO
LER (RAIO);
AREA:= PI * SQR(RAIO);
ESCREVER (‘AREA =’, AREA)
FIM.
Instrução

A instrução é o passo, ou etapa do algoritmo. Normalmente, é a linha de


código seguida de ponto-e-vírgula.
Declaração de variáveis

Prof. Victor Dalton


www.estrategiaconcursos.com.br 6 de 73
Tecnologia da Informação para ICMS/SP 2017
Agente Fiscal de Rendas Gestão Tributária
Prof Victor Dalton Aula 06

Um algoritmo, via de regra, inicia-se pela declaração de variáveis. Perceba


no nosso algoritmo exemplo, destacado em azul.

ALGORITMO MEDIA_FINAL;
VAR NOTA1, NOTA2, NOTA3, NOTA4, MEDIA: INTEIRO;
NOME: CARACTERE [35]
INICIO
LER (NOME);
LER (NOTA1, NOTA2, NOTA3, NOTA4);
MEDIA:= (NOTA1 + NOTA2 + NOTA3 + NOTA4) / 4;
ESCREVER (NOME, MEDIA)
FIM.

As constantes também são declaradas no início do algoritmo, juntamente


com as variáveis.

Conjunto de instruções

O conjunto de instruções é a inteligência do algoritmo, a sua razão de ser.


Veja, em destaque, no mesmo algoritmo:

ALGORITMO MEDIA_FINAL;
VAR NOTA1, NOTA2, NOTA3, NOTA4, MEDIA: INTEIRO;
NOME: CARACTERE [35]
INICIO
LER (NOME);
LER (NOTA1, NOTA2, NOTA3, NOTA4);
MEDIA:= (NOTA1 + NOTA2 + NOTA3 + NOTA4) / 4;
ESCREVER (NOME, MEDIA)
FIM.

Em pseudocódigo, costuma-se utilizar “Inicio” e “Fim” para delimitar o


conjunto de instruções.

E agora? Ficou mais compreensível o nosso algoritmo? Mas ainda tem mais!

1.4 Tipos de variáveis

Prof. Victor Dalton


www.estrategiaconcursos.com.br 7 de 73
Tecnologia da Informação para ICMS/SP 2017
Agente Fiscal de Rendas Gestão Tributária
Prof Victor Dalton Aula 06

Os tipos primitivos mais comuns de variáveis são:

INTEIRO – número inteiro;


REAL – número real;
CARACTERE (string) – texto, que pode conter letras, símbolos e números;
LÓGICO (boolean) – assumem apenas os valores verdadeiro ou falso.

1.4.1 Vetores, matrizes e registros

Vetores são estruturas unidimensionais, que possuem o mesmo princípio de


uma matriz, contendo apenas uma linha e várias colunas.

Descreve-se um vetor por meio do formato


Vetor <variavel>[ <dimensao> ] de <tipo>, em que:

variavel nome da variável;


dimensao tamanho do vetor;
tipo tipo primitivo da variável (deverá ser único).

Ex: VET A[10] de REAL;

Esse vetor pode ser representado da seguinte forma:

E suas variáveis podem ser manipuladas individualmente, sem problemas.


Basta selecioná-la pelo índice.
Ao fazer, por exemplo, A[3] 1.33 tem-se:

A 1,33

Matrizes, por sua vez, são estruturas bidimensionais, podendo conter


múltiplas linhas e colunas.
Descreve-se uma matriz por meio do formato
Prof. Victor Dalton
www.estrategiaconcursos.com.br 8 de 73
Tecnologia da Informação para ICMS/SP 2017
Agente Fiscal de Rendas Gestão Tributária
Prof Victor Dalton Aula 06
Vetor <variavel>[ <dimensao1> ] [ <dimensao2> ] de <tipo>,
em que:

variavel nome da variável;


dimensao1 tamanho do vetor(colunas);
dimensao2 tamanho do vetor(linhas);
tipo tipo primitivo da variável (deverá ser único).

Ex: MAT B[3][5] de INTEIRO;

Essa matriz pode ser representado da seguinte forma:

E suas variáveis também podem ser manipuladas individualmente, sem


problemas. Basta selecioná-la pelo índice.
Ao fazer, por exemplo, B[1][2] 10 tem-se:

B
10

Tudo bem? Vetores e Matrizes podem ser utilizados livremente. Entretanto,


sua utilidade poderá ser vista quando estudarmos as estruturas de controle.

Por fim, Registros são estruturas de dados que agregam valores de


diferentes tipos, possibilitando a criação de novos tipos de dados. Agregam dados
logicamente relacionados, embora de tipos diferente. Registros podem conter
outros registros.

Ex:
Prof. Victor Dalton
www.estrategiaconcursos.com.br 9 de 73
Tecnologia da Informação para ICMS/SP 2017
Agente Fiscal de Rendas Gestão Tributária
Prof Victor Dalton Aula 06

Registro PESSOA

Nome: caractere[35]
Endereco: caractere[100]
Idade: inteiro

Em programação orientada a objetos, são objetos, propriamente ditos.

1.5 Atribuição

Em lógica de programação, temos que prestar atenção à manipulação das


variáveis. Representadas por um “:=” ou por uma seta para a esquerda ( ), a
atribuição implica em atribuir a uma variável o valor do outro lado do símbolo (:=
ou ).

Por exemplo, como você descreve o conteúdo dessa instrução?

MEDIA:= (NOTA1 + NOTA2 + NOTA3 + NOTA4) / 4;

Sim, eu quero que você verbalize a linha acima.

Caso você tenha começado a sentença com “Média é igual a....” PARA
TUDO!!! Entremos na lógica de programação desde já!

Você deverá ler a sentença da seguinte forma: “Média recebe o valor de


NOTA 1 + .......”

Lembra que dissemos que variável é um espaço de memória do computador?


Portanto, na atribuição, o valor resultante do lado direito da instrução é inserido
na variável, do lado esquerdo da instrução.

Veja, na tabela abaixo, alguns exemplos de possíveis atribuições:

Atribuição Exemplo
variável constante A 45 (“A recebe 45”)
variável variável A B (“A recebe o valor de B”)
variável expressão A B + C (“A recebe o valor de B + C”)
variável função A calculo(B,C) (“A recebe o retorno da função calculo”)

Prof. Victor Dalton


www.estrategiaconcursos.com.br 10 de 73
Tecnologia da Informação para ICMS/SP 2017
Agente Fiscal de Rendas Gestão Tributária
Prof Victor Dalton Aula 06

Em lógica de programação, a igualdade é utilizada para fins de comparação.


Isso será visto adiante.

1.6 Teste de Mesa

Para desenvolver ou analisar um algoritmo, é altamente recomendável a


realização do chamado teste de mesa, também chamado de teste chinês.
Realizar o teste de mesa é acompanhar um algoritmo passo a passo, mantendo
uma tabela com os valores das variáveis e registrar as mudanças nestas variáveis
ao longo da execução do mesmo.

Nos exercícios, teremos a oportunidade de fazer e acompanhar vários testes


de mesa.

1.7 Operadores Aritméticos, Relacionais e Lógicos

A hierarquia de operadores aritméticos em lógica de programação não


foge a tradicional:

Operador Símbolo Prioridade


Multiplicação * 1ª
Divisão / 1ª
Adição + 2ª
Subtração - 2ª

O programador, via de regra, observa a utilização do parênteses para definir


claramente a ordem das operações matemáticas. Na ausência deles, opera-se
conforme a tabela acima, da esquerda para a direita da expressão matemática.

Os operadores relacionais, por sua vez, são aqueles que comparam


valores, variáveis, constantes e expressões, retornando verdadeiro ou falso.
Eles estão descritos abaixo:

Operador Significado
> maior
< menor
= igual
>= maior ou igual
<= menor ou igual
<> diferente
Prof. Victor Dalton
www.estrategiaconcursos.com.br 11 de 73
Tecnologia da Informação para ICMS/SP 2017
Agente Fiscal de Rendas Gestão Tributária
Prof Victor Dalton Aula 06

Os operadores lógicos, finalmente, permitem verificar uma condição,


também retornando verdadeiro ou falso. Esses operadores são importantíssimos
para permitir a criação de diferentes estruturas de algoritmos, que serão vistas
mais adiante São eles:

Operação Operador
Negação não
Conjunção e
Disjunção ou
Disjunção exclusiva xou (lido como “ou exclusivo”)

Importantíssimo conhecer a tabela verdade desses operadores (tudo bem


que essas operações são bem intuitivas). Entretanto, interpretar erroneamente
um operador lógico fatalmente conduz a uma interpretação equivocada de um
algoritmo.

X Y XeY X ou Y não X X xou Y


V V V V F F
V F F V F V
F V F V V V
F F F F V F

1.8 Instruções “Ler” e “Escrever”

Ler e Escrever(também chamado Imprimir) são instruções muito corriqueiras


em pseudocódigo. De maneira bem resumida, Ler implica em solicitar ao usuário
que entre com um dado, na tela do computador. No nosso algoritmo exemplo,
as linhas:

LER (NOME);
LER (NOTA1, NOTA2, NOTA3, NOTA4);

implicam em uma “paralisação” do algoritmo, que espera o usuário inserir


esses valores no computador, para que ele possa continua.

Por fim, o comando Escrever imprime, na tela do computador, o dado.


Portanto, o comando

ESCREVER (NOME, MEDIA)

Prof. Victor Dalton


www.estrategiaconcursos.com.br 12 de 73
Tecnologia da Informação para ICMS/SP 2017
Agente Fiscal de Rendas Gestão Tributária
Prof Victor Dalton Aula 06
imprime, lado a lado, o conteúdo das variáveis NOME e MEDIA, na tela do
computador.

1.9 Procedimentos e funções

Os algoritmos (ou mesmo os programas) podem ser classificados como


funções ou como procedimentos.

Procedimento ou subrotina é o código que executa uma tarefa particular.


O software, devido à sua natureza, é complexo, e o programador necessita
organizar o seu código em diversas sub-rotinas. É comum, inclusive, que
procedimentos disparem a execução de outros procedimentos, ou funções.

Uma função, por sua vez, é um pouco mais peculiar, pois obrigatoriamente
retorna um valor.

Vamos rever um código, já mostrado anteriormente, que ilustre o que


estamos falando:

ALGORTIMO AREA_CIRCUNFERENCIA;
CONST PI = 3.1416;
VAR RAIO, AREA: REAL;
INICIO
LER (RAIO);
AREA:= PI * SQR(RAIO);
ESCREVER (‘AREA =’, AREA)
FIM.

O procedimento acima realiza o cálculo de uma área de circunferência. Uma


vez que o usuário insira o valor para a variável RAIO, o algoritmo calcula a área
de circunferência correspondente.

Mas você reparou em SQR(RAIO)?

SQR(parâmetro) é uma função, que ainda não foi apresentada a você.


Conheça seu código:

SQR(NUMERO:real):real;
VAR QUADRADO:real
INICIO
QUADRADO:= NUMERO * NUMERO;
RETORNAR QUADRADO;
FIM

Prof. Victor Dalton


www.estrategiaconcursos.com.br 13 de 73
Tecnologia da Informação para ICMS/SP 2017
Agente Fiscal de Rendas Gestão Tributária
Prof Victor Dalton Aula 06
Compreendeu a natureza da função?

A função, via de regra, recebe parâmetros, realiza alguma inteligência


interna e retorna um valor. A função SQR(parâmetro), retorna um número real.
Seu parâmetro, identificado como NUMERO, também deve ser um número real,
conforme definido neste exemplo. Internamente, ela trabalha apenas com uma
variável, que recebeu o valor do quadrado do número passado como parâmetro.
A instrução RETORNAR “devolve”, para quem chamou a função, o valor
calculado pela própria função.

Criar funções facilita muito o trabalho do programador, uma vez que


determinadas lógicas são empregadas com frequência dentro de um mesmo
software de computador. Ao invés de escrever várias vezes a mesma coisa, cria-
se uma única função, deixando apenas os parâmetros em aberto.

1.10 Variáveis locais e Variáveis globais

Os poucos algoritmos vistos até agora mostraram apenas variáveis locais.


As variáveis locais apenas “existem” dentro do bloco no qual foram declaradas.
Se uma função ou procedimento inicia declarando variáveis, aquelas variáveis são
locais. Embora possam ser passadas como parâmetro dentro do programa em que
estejam executando, o término do programa extingue essas variáveis.

funcao ABC (parametro1,parametro2):inteiro


VAR A,B,C:inteiro //variáveis locais
INICIO
......
FIM //ao término da função, as variáveis locais “desaparecem”

Por outro lado, existem as chamadas variáveis globais. As variáveis globais


são declaradas fora de todas as funções de um programa. Dessa forma, as
variáveis são persistentes, e podem ser manipuladas por todas as funções. Veja
abaixo, um “microprograma”, ilustrado em pseudocódigo:

VAR D,E: inteiro//variáveis globais; estão fora de todas as funções

funcao ABC (parametro1,parametro2):inteiro


VAR A,B,C:inteiro //variáveis locais
INICIO
......
FIM //ao término da função, as variáveis locais “desaparecem”
funcao XYX(parametro3, parametro4):inteiro

Prof. Victor Dalton


www.estrategiaconcursos.com.br 14 de 73
Tecnologia da Informação para ICMS/SP 2017
Agente Fiscal de Rendas Gestão Tributária
Prof Victor Dalton Aula 06
VAR Z:inteiro //variável local
INICIO
Z parametro3 +parametro4;
D D + Z // variável global sendo manipulada
FIM// variável local extinta, variável global modificada, e continua existindo

1.11 Passagem de parâmetros por valor e por referência

Você deve ter percebido que os parâmetros são elementos importantes na


programação. É conveniente definir funções ou procedimentos que recebam
parâmetros como entrada, e manipulem esse parâmetro no interior de seu código.
Na programação estruturada, o bom programador deverá modularizar o
seu código, ou seja, dividir as tarefas do seu software, decompor um grande
problema em um conjunto de pequenos problemas simples.

Em resumo, um módulo é um conjunto de instruções organizado em


um trecho de algoritmo, para realizar uma tarefa bem definida.

A modularidade traz diversos benefícios, pois deixa o código mais legível,


mais fácil de manutenir, mais flexível, as tarefas podem ser divididas por mais
programadores, dentre outros.

Ao modularizar o código, busca-se alta coesão em cada módulo, ou seja,


que os seus elementos possuam alto relacionamento e possuam uma tarefa bem
definida.

Ao mesmo tempo, deseja-se o baixo acoplamento, ou seja, que cada


módulo comunique-se pouco com os demais. Naturalmente, a comunicação é
inevitável, e, nesse contexto, a passagem de parâmetros entre módulos que se
comunicam é comum.

Na passagem de parâmetros por valor, a variável passada como


parâmetro passa apenas o seu valor para o outro módulo, não sofrendo
modificações no seu módulo de origem.

Na passagem de parâmetros por referência, o parâmetro passado é, na


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

Ficou complicado?
Vamos retratar essa diferença por meio de dois exemplos bem didáticos,
pode ser?

Prof. Victor Dalton


www.estrategiaconcursos.com.br 15 de 73
Tecnologia da Informação para ICMS/SP 2017
Agente Fiscal de Rendas Gestão Tributária
Prof Victor Dalton Aula 06

Algoritmo VALOR
VAR TESTE:inteiro
INICIO
TESTE 30;
MANIPULA_VARIAVEL(TESTE);
ESCREVA(TESTE);
FIM

Algoritmo MANIPULA_VARIAVEL(X:inteiro)
INICIO
X X + 10;
ESCREVA(X);
FIM

Vamos executar o algoritmo VALOR?

Este algoritmo começa atribuindo à variável TESTE o valor 30. No passo


seguinte, é chamado o algoritmo MANIPULA_VARIAVEL, passando a variável
TESTE como parâmetro. Nesse momento, o algoritmo VALOR “pausa”, e começa
o algoritmo MANIPULA_VARIAVEL.

O algoritmo MANIPULA_VARIAVEL atribui a X, seu parâmetro recebido, o


próprio valor de X, acrescido de 10. É uma forma de somar 10 ao valor recebido,
seja ele qual for. Na sequência, imprime-se X na tela do computador, ou seja, o
valor 40. E o algoritmo chega ao fim.

Voltando ao algoritmo VALOR, imprime-se também o valor de TESTE na tela


do computador. Como a passagem de parâmetro foi por valor, TESTE não sofreu
nenhuma alteração, e o valor impresso em tela é 30. Tudo bem?

Comparemos o mesmo código quando a passagem de parâmetros é por


referência. Vejamos:

Algoritmo REFERENCIA
VAR TESTE:inteiro
INICIO
TESTE 30;
MANIPULA_VARIAVEL(TESTE);
ESCREVA(TESTE);
FIM
Algoritmo MANIPULA_VARIAVEL(X:inteiro)
INICIO
X X + 10;
ESCREVA(X);
Prof. Victor Dalton
www.estrategiaconcursos.com.br 16 de 73
Tecnologia da Informação para ICMS/SP 2017
Agente Fiscal de Rendas Gestão Tributária
Prof Victor Dalton Aula 06
FIM
Vamos executar o algoritmo REFERENCIA?

Este algoritmo começa atribuindo à variável TESTE o valor 30. No passo


seguinte, é chamado o algoritmo MANIPULA_VARIAVEL, passando a variável
TESTE como parâmetro. Nesse momento, o algoritmo REFERENCIA “pausa”, e
começa o algoritmo MANIPULA_VARIAVEL.

O algoritmo MANIPULA_VARIAVEL atribui a X, seu parâmetro recebido, o


próprio valor de X, acrescido de 10. Na sequência, imprime-se X na tela do
computador, ou seja, o valor 40. E o algoritmo chega ao fim.

Voltando ao algoritmo REFERENCIA, imprime-se também o valor de TESTE


na tela do computador. Como a passagem de parâmetro foi por referência, a
variável TESTE foi modificada no algoritmo MANIPULA_VARIAVEL, e o valor
impresso em tela é 40. Notou a diferença?

Resumindo:

Passagem de parâmetro por valor apenas o valor da variável é passado


como parâmetro. Modificações no parâmetro não modificam a variável original.

Passagem de parâmetro por referência o endereço da memória da variável


é passado como parâmetro. Modificações no parâmetro são modificações na própria variável.

2. Estruturas de controle

Entendidos os fundamentos básicos acerca dos algoritmos, podemos avançar


o nosso estudo para algoritmos mais complexos.

2.1 Estrutura Sequencial

A estrutura sequencial é a estrutura mais simples que um algoritmo pode


possuir. Nela, as instruções são executadas sequencialmente, passo a passo.

1.ALGORITMO MEDIA_FINAL;
2.VAR NOTA1, NOTA2, NOTA3, NOTA4, MEDIA: INTEIRO;

Prof. Victor Dalton


www.estrategiaconcursos.com.br 17 de 73
Tecnologia da Informação para ICMS/SP 2017
Agente Fiscal de Rendas Gestão Tributária
Prof Victor Dalton Aula 06
3.NOME : CARACTERE [35]
4.INICIO
5.LER (NOME);
6.LER (NOTA1, NOTA2, NOTA3, NOTA4);
7.MEDIA := (NOTA1 + NOTA2 + NOTA3 + NOTA4) / 4;
8.ESCREVER (NOME, MEDIA)
9.FIM.

Esse é o nosso já conhecido algoritmo MEDIA_FINAL. Nela, já vimos que os


passos são seguidos, sequencialmente, de 1 a 9.

2.2 Estruturas de Seleção

As estruturas de seleção são aquelas em que, em algum passo, o algoritmo


verifica determinada condição para, então seguir por algum caminho. Vejamos
alguns subtipos.

2.2.1 Estrutura de seleção simples (ou estrutura de desvio, ou


estrutura condicional, ou estrutura if-then)

Analise comigo o algoritmo a seguir:

ALGORITMO NUMEROS_IGUAIS;
1.VAR A, B: INTEIRO;
2.INICIO
3.LER (A, B);
4.SE (A=B)
5.ENTÃO ESCREVER (“Os números são iguais!”);
6.FIM.

Este é um algoritmo que possui uma estrutura de seleção simples.


Diferentemente da estrutura sequencial pura, perceba que a linha 5 somente será
executada se a condição analisada na linha 4 for atendida. Compreendeu?

Então eu vou lançar mão de um recurso, daqui pra frente, chamado


identação. Identação é a utilização de tabulação nas linhas de código, para
visualizar o entendimento do mesmo. Veja novamente abaixo o mesmo código:

Prof. Victor Dalton


www.estrategiaconcursos.com.br 18 de 73
Tecnologia da Informação para ICMS/SP 2017
Agente Fiscal de Rendas Gestão Tributária
Prof Victor Dalton Aula 06

ALGORITMO NUMEROS_IGUAIS;
1.VAR A, B: INTEIRO;
2.INICIO
3.LER (A, B);
4.SE (A=B)
5.ENTÃO ESCREVER (“Os números são iguais!”);
6.FIM.

Perceba que a identação não mudou em nada o conteúdo do código. Mas,


agora, fica mais fácil para você perceber a “subordinação” da linha 5 à análise da
linha 4, não é mesmo? Caso a condição seja falsa, a linha 5 simplesmente é
pulada, e o código não faz nada.

2.2.2 Estrutura de seleção composta (ou estrutura de desvio, ou


estrutura condicional, ou estrutura if-then-else)

Analisemos juntos mais um algoritmo:

ALGORITMO MAIOR_NUMERO;
1.VAR A, B: INTEIRO;
2.INICIO
3.LER (A, B);
4.SE (A>B)
5.ENTÃO ESCREVER (A);
6.SENAO ESCREVER (B);
7.FIM.
Acho que você já está entrando no ritmo!

Nesse caso, a estrutura ficou um pouco mais refinada. O Comando SE (if),


na linha 4, apresenta uma condição. Se a condição for verdadeira, a linha 5 é
executada. Se a condição for falsa, a linha 6 será a executada.
Ou seja, obrigatoriamente uma, e somente uma das linhas 5 e 6 será
executada, antes do código chegar ao seu fim, compreendeu?

Os comandos chave para as estruturas condicionais são o se (if, que impõe


a condição), o então (then, executado quando a condição é verdadeira) e o senão
(else, executado quando a condição é falsa).

Prof. Victor Dalton


www.estrategiaconcursos.com.br 19 de 73
Tecnologia da Informação para ICMS/SP 2017
Agente Fiscal de Rendas Gestão Tributária
Prof Victor Dalton Aula 06

2.2.3 Estrutura de seleção aninhada

A estrutura de seleção aninhada não chega a ser uma outra variante. Apenas,
mostra que é possível, de maneira variada, aproveitar-se com comandos if-then-
else. Veja:

ALGORITMO ACHA_MAIOR_NUMERO;
1.VAR A, B, C: INTEIRO;
2.INICIO
3.LER (A, B, C);
4.SE (A>B) E (A>C)
5.ENTÃO ESCREVER (A)
6.SENÃO SE (B>A) E (B>C)
7.ENTÃO ESCREVER (B)
8.SENÃO ESCREVER (C)
9.FIM.

Captou o “espírito” desse algoritmo? Consegue acompanhar a execução dele?


Então vou deixar um desafio no ar, para saber se você realmente entendeu.
Se você souber escolher valores “maliciosos” para A, B e C, o algoritmo falha.
Dica: envolve escolher números iguais. Resposta na última página da apostila!
Mas tente resolver sozinha (o)!

2.2.4 Estrutura de seleção múltipla

Quando a utilização de uma condição envolve um julgamento de verdadeiro


ou falso, utilizar if-then ou if-then-else são condutas bastante válidas. Mas o que
fazer quando se deseja uma seleção entre múltiplas escolhas?

Nesse momento entra em ação o comando case. Podemos ir direto a um


exemplo?

ALGORITMO_NUMEROLOGIA
VAR opcao:INTEIRO
INICIO
ESCREVA(“Digite um número de 1 a 9”);
LEIA(opcao)
ESCOLHA(opção)

Prof. Victor Dalton


www.estrategiaconcursos.com.br 20 de 73
Tecnologia da Informação para ICMS/SP 2017
Agente Fiscal de Rendas Gestão Tributária
Prof Victor Dalton Aula 06
CASO 1
ESCREVA(“Você é azarado!”);
CASO 2
ESCREVA(“Você é sortudo!”);
CASO 3
ESCREVA(“Você vai passar nesse concurso!”);
.........
OUTROCASO (“Eu pedi pra escolher entre 1 e 9!”);

FIM

Tenho certeza que você entendeu! Utilizando o case, dependendo do valor


da variável, apenas uma das múltiplas opções será executada.

Nesse tipo de estrutura destacam-se os comandos como switch (ESCOLHA),


case (CASO) e default (OUTROCASO – executado quando a variável não encontre
nenhum correspondente entre os case.

2.3 Estruturas de repetição

As estruturas de repetição são uma ferramenta poderosa. Sem medo de


errar, afirmo que é o tipo de estrutura mais útil para o programador. Nela, é
possível colocar um trecho de código em “loop”, ou laço de repetição,
executando até que uma condição seja atingida, ou enquanto uma condição
permanecer válida.

2.3.1 Estruturas de repetição com verificação antecipada

Vamos direto a um exemplo, já que é assim que se aprende?

Prof. Victor Dalton


www.estrategiaconcursos.com.br 21 de 73
Tecnologia da Informação para ICMS/SP 2017
Agente Fiscal de Rendas Gestão Tributária
Prof Victor Dalton Aula 06
O código abaixo apresenta uma estrutura nova, utilizando o comando
enquanto (while).

Para auxiliar o nosso teste de mesa, vamos fazer uma tabelinha controlando
as variáveis J e X, tudo bem?

J X

Vamos acompanhar a execução desse código, passo a passo.

As primeiras linhas desse código não possuem mistério algum. Duas


variáveis, J e X são declaradas, como números inteiros, e já recebem valores
iniciais, 1 e 2, respectivamente. Registremos em nossa tabela.

J X
1 2

Entremos na estrutura enquanto (while).

Essa estrutura tem por característica verificar a condição de execução de seu


código ANTES de executá-lo. Como J (1) é menor que 10, podemos iniciar o
código.

Nele, X é acrescido de 1, e J é acrescido de 2, assumindo os valores 3 e 3 ,


respectivamente.
J X
1 2
3 3

Prof. Victor Dalton


www.estrategiaconcursos.com.br 22 de 73
Tecnologia da Informação para ICMS/SP 2017
Agente Fiscal de Rendas Gestão Tributária
Prof Victor Dalton Aula 06
Chegamos ao fim do enquanto. E agora vem a grande característica das
estruturas de repetição! Ao invés de prosseguir com o código, devemos voltar à
condição de verificação do while. Caso a condição permaneça verdadeira,
devemos permanecer dentro desse laço!

Laço: devemos permanecer dentro dele enquanto a condição for verdadeira

Como J (3) é menor que 10, executamos o laço novamente, e X passa a valer
4, e J passa a valer 5.

J X
1 2
3 3
5 4

Adiantando um pouco o passo, prossigamos até ter o seguinte estado:

J X
1 2
3 3
5 4
7 5
9 6

Com J valendo 9, o laço é executado mais uma vez. X recebe o valor 7, e J


recebe o valor 11. Acabou, é isso?

NÃO! Chega-se ao fim do enquanto, e volta-se à condição de verificação,


mais uma vez.
J X
1 2
3 3
5 4

Prof. Victor Dalton


www.estrategiaconcursos.com.br 23 de 73
Tecnologia da Informação para ICMS/SP 2017
Agente Fiscal de Rendas Gestão Tributária
Prof Victor Dalton Aula 06
7 5
9 6
11 7

Nesse momento, verifica-se que J (11) não é menor que 10. Aqui sim, o laço
termina, e pula-se, então, para a linha imediatamente após o laço.

Preste atenção! O laço só pode ser interrompido por ocasião da


verificação! Durante a execução do laço, J poderia assumir os valores mais
absurdos possíveis, que o laço continuaria executando.

Imprimindo-se X e J, apareceria na tela do computador 7 e 11. Entendido?


O while mantém o laço executando enquanto a condição for verdadeira.

2.3.2 Estruturas de repetição com verificação no final

Este tipo de estrutura é muito similar à anterior, mas a verificação ocorre


após a execução do laço. Utiliza os comandos repeat e until. Mas, enquanto o
while executa enquanto a condição for verdadeira, o repeat until executará
até que a condição seja verdadeira. É uma diferença sutil, mas fácil de
compreender.

Exemplo:

ALGORITMO EXIBE_NUMEROS;
Var N: inteiro;
Inicio
Leia(N);
REPITA
Escreva(N);
N:= N + 1
ATÉ N>10;
Fim

Bem, acho que você já percebeu que esse algoritmo vai escrever, na tela do
computador, números de N (que será a entrada do usuário) até 10, não é verdade?

Ainda, o repeat until possui outra sutileza: obrigatoriamente ele deverá


ser executado pelo menos uma vez, já que a verificação ocorre somente no final.
Quando se utiliza o while, caso a condição imposta seja falsa, logo no começo, o
laço sequer é executado!

Prof. Victor Dalton


www.estrategiaconcursos.com.br 24 de 73
Tecnologia da Informação para ICMS/SP 2017
Agente Fiscal de Rendas Gestão Tributária
Prof Victor Dalton Aula 06

2.3.2 Estruturas de repetição com variável de controle

Uma terceira forma de estrutura de repetição é a utilização de uma variável


de controle, própria do laço de repetição. Inclusive, é a mais comumente utilizada.
O comando chave, nestes moldes, é o comando PARA (for).

ALGORITMO EXIBE_NUMEROS_COM_FOR;
Var N: inteiro;
Inicio
Leia(N);
PARA cont 1 até N passo 1 FAÇA
Escreva(cont);
FIM-PARA
Fim

A essa altura, creio que você já esteja entendendo bem. A estrutura PARA
criou uma variável, chamada cont, que inicia com o valor 1. Esse laço deverá se
repetir até que cont assuma o valor N, que, neste código, é uma entrada do
usuário.
Naturalmente, cont precisa sofrer alguma forma de modificação a cada
passagem pelo laço. Caso isso não ocorresse, ficaríamos em loop infinito, presos
no laço. Para o código acima, o passo 1 indica que, a cada volta no laço, cont
deverá ser incrementado em um inteiro.
Não existe uma convenção muito “amarrada” em pseudocódigo para esse
incremento. Esse laço também poderia estar escrito assim:

PARA cont 1 até N FAÇA


Escreva(cont);
cont cont + 1;
FIM-PARA

Enfim, o “espírito” é o mesmo.

Assim sendo, esse código imprimirá, na tela do computador, números de 1 a


N, sendo N a entrada do usuário. Tudo bem?

2.3.2 O comando break

Prof. Victor Dalton


www.estrategiaconcursos.com.br 25 de 73
Tecnologia da Informação para ICMS/SP 2017
Agente Fiscal de Rendas Gestão Tributária
Prof Victor Dalton Aula 06

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

ALGORITMO EXIBE_NUMEROS_COM_BREAK;
Var N: inteiro;
Inicio
Leia(N);
FOR cont 1 até N passo 1
Escreva(cont);
if (cont >=25) break;
END-FOR
Imprima (“O programa chegou ao seu final”);
Fim

Neste caso, perceba que o break, nesse código, funciona como uma proteção.
Caso o usuário atribua um valor acima de 25 a N, quando aquele if se tornar
verdadeiro, o laço será interrompido “à força”, e o programa continua
normalmente, fora do laço. No exemplo acima, após imprimir 25 na tela do
computador, o algoritmo imprime O programa chegou ao seu final. Tudo bem?

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

3. Programação orientada a objetos: conceitos

Antes de começar com os fundamentos, permitam-me escrever um pouco de


código Java. Explicá-lo-ei de uma maneira simples, no começo, e ao longo dos
exercícios falaremos mais detalhes dele.

// declaração inicial da classe Pessoa


public class Pessoa{

private String nome;


private String cpf;
private int idade;

public Pessoa(){
Prof. Victor Dalton
www.estrategiaconcursos.com.br 26 de 73
Tecnologia da Informação para ICMS/SP 2017
Agente Fiscal de Rendas Gestão Tributária
Prof Victor Dalton Aula 06
nome = “Nome Genérico”
}

public Pessoa(String novo_nome, String numerocpf, int idadeatual){


this.nome = novo_nome;
this.cpf = numerocpf;
this.idade = idadeatual;
}

public void setNome(String novo_nome){


nome=novo_nome;
}
public String getNome() {
return nome;}
}
// fim da declaração da classe Pessoa

// declaração inicial da classe Funcionário

public class Funcionario extends Pessoa{


private String departamento;

public void setDepartamento(String novo_departamento){


departamento=novo_departamento;
}
public String getDepartamento() {
return departamento;}

public String getNome() {


return concat(nome, departamento);}

}
// fim da declaração da classe Departamento

Vejam que neste pedaço de código estamos falando da classe Pessoa, que
contém atributos, como nome, cpf e idade, e também contém métodos, como o
setNome e getNome. Além disso, ele possui dois construtores, um Pessoa() e
Pessoa(String novo_nome, String numerocpf, int idadeatual).

A classe Funcionario, por sua vez, também tem seu atributo departamento,
e seus métodos setDepartamento e getDepartamento.

Prof. Victor Dalton


www.estrategiaconcursos.com.br 27 de 73
Tecnologia da Informação para ICMS/SP 2017
Agente Fiscal de Rendas Gestão Tributária
Prof Victor Dalton Aula 06

3.1 Conceitos básicos

A POO (programação orientada a objetos) é a mais popular nos dias de hoje,


e tem no Java o seu maior estandarte. A POO é alicerçada em alguns conceitos
básicos, a saber:

 Classe representa um conjunto de objetos com características afins. Uma


classe define o comportamento dos objetos através de seus métodos, e quais
estados ele é capaz de manter através de seus atributos. Exemplo de classe: Os
seres humanos. Subclasse é uma nova classe que herda características de sua(s)
classe(s) ancestral(is). No exemplo acima, Pessoa é classe e Funcionario é
subclasse de Pessoa. Mas Funcionario também é uma classe!

 Objeto / instância de uma classe. Um objeto é capaz de armazenar


estados através de seus atributos e reagir a mensagens enviadas a ele, assim
como se relacionar e enviar mensagens a outros objetos. Exemplo de objetos da
classe Humanos: João, José, Maria.

 Atributos são características de um objeto. Basicamente a estrutura de


dados que vai representar a classe. Exemplos: Funcionário: nome, endereço,
telefone, CPF,...; Carro: nome, marca, ano, cor, …; Livro: autor, editora, ano. Por
sua vez, os atributos possuem valores. Por exemplo, o atributo cor pode conter o
valor azul. O conjunto de valores dos atributos de um determinado objeto é
chamado de estado.

 Métodos definem as habilidades dos objetos. Bidu é uma instância da


classe Cachorro, portanto tem habilidade para latir, implementada através do
método deUmLatido. Um método em uma classe é apenas uma definição. A ação
só ocorre quando o método é invocado através do objeto, no caso Bidu. Dentro
do programa, a utilização de um método deve afetar apenas um objeto em
particular; Todos os cachorros podem latir, mas você quer que apenas Bidu dê o
latido. Normalmente, uma classe possui diversos métodos, que no caso da classe
Cachorro poderiam ser “sente”, “coma” e “morda”.

 Mensagem é uma chamada a um objeto para invocar um de seus métodos,


ativando um comportamento descrito por sua classe. Também pode ser
direcionada diretamente a uma classe (através de uma invocação a um método
estático).

 Herança (ou generalização) é o mecanismo pelo qual uma classe


(subclasse) pode estender outra classe (superclasse), aproveitando seus
comportamentos (métodos) e variáveis possíveis (atributos). Um exemplo de

Prof. Victor Dalton


www.estrategiaconcursos.com.br 28 de 73
Tecnologia da Informação para ICMS/SP 2017
Agente Fiscal de Rendas Gestão Tributária
Prof Victor Dalton Aula 06
herança: Mamífero é superclasse de Humano. Ou seja, um Humano é um
mamífero. Há herança múltipla quando uma subclasse possui mais de uma
superclasse. Essa relação é normalmente chamada de relação "é um". No exemplo
antes da questão, Funcionario está herdando Pessoa (extends). Logo, ele também
possui todos os atributos e métodos de Pessoa (nome, cpf, idade, getNome e
setNome).

 Associação é o mecanismo pelo qual um objeto utiliza os recursos de


outro. Pode tratar-se de uma associação simples "usa um" ou de um acoplamento
"parte de". Por exemplo: Um humano usa um telefone. A tecla "1" é parte de um
telefone.

 Encapsulamento consiste na separação de aspectos internos e externos


de um objeto. Este mecanismo é utilizado amplamente para impedir o acesso
direto ao estado de um objeto (seus atributos), disponibilizando externamente
apenas os métodos que alteram estes estados. Exemplo: você não precisa
conhecer os detalhes dos circuitos de um telefone para utilizá-lo. A carcaça do
telefone encapsula esses detalhes, provendo a você uma interface mais amigável
(os botões, o monofone e os sinais de tom). Na prática, em Java, todo atributo no
qual se escreve um private antes fica encapsulado, e outro objeto de fora não
possui acesso a ele, a não ser que exista um método que possibilite isso, como os
get/set Nome e Departamento, que são public. Cabe ressaltar que ainda existe o
protected, que permite que classes em um mesmo pacote acessem o método ou
atributo protegido.

 Abstração é a habilidade de concentrar nos aspectos essenciais de um


contexto qualquer, ignorando características menos importantes ou acidentais.
Em modelagem orientada a objetos, uma classe é uma abstração de entidades
existentes no domínio do sistema de software. Toda classe é uma forma de
abstração.

 Polimorfismo é habilidade de uma única operação ou nome de atributo


ser definido em mais de uma classe e assumir diferentes implementações em cada
uma dessas classes. Está estritamente ligado à herança, uma vez que uma classe
abstrata pode definir um método sem implementá-lo, deixando a implementação
para as classes filhas. Ou, mesmo que a superclasse implemente o método, pode
a subclasse implementá-lo também.

Ocorre polimorfismo, no meu exemplo, na função getNome() na classe


Funcionario. Perceba que, mesmo que o método contenha a mesma assinatura
(getNome() em Pessoa e getNome() em Funcionario), isso não chega a ser um
problema, pois não ocorre confusão quando se chama a função. Quando
chamarem a função getNome() em um objeto Funcionario, será o getNome() da
classe Funcionario que será executado. Caso esse método não existisse, seria o
getNome() da classe Pessoa o executado. Isso é o polimorfismo.

Prof. Victor Dalton


www.estrategiaconcursos.com.br 29 de 73
Tecnologia da Informação para ICMS/SP 2017
Agente Fiscal de Rendas Gestão Tributária
Prof Victor Dalton Aula 06

 A sobrecarga de métodos é um recurso peculiar no qual mais de


um método possuem o mesmo nome, entretanto, recebem parâmetros distintos
(onde ocorre a diferenciação dos métodos).

 Interface é um contrato entre a classe e o mundo externo. Quando uma


classe implementa uma interface, ela está comprometida a fornecer o
comportamento publicado pela interface. É possível a criação de várias interfaces
para uma mesma classe, mas isso não é herança!

 Pacotes (ou Namespaces) são referências para organização lógica de


classes e interfaces.

Enfim, vistos estes conceitos básicos, é hora de “enfiar a cara” nos exercícios.
Eles trarão exemplos práticos e ajudarão a consolidar os conceitos que vimos na
aula!

Prof. Victor Dalton


www.estrategiaconcursos.com.br 30 de 73
Tecnologia da Informação para ICMS/SP 2017
Agente Fiscal de Rendas Gestão Tributária
Prof Victor Dalton Aula 06
EXERCÍCIOS COMENTADOS

1ª Questão) (FCC – TRE/SP – Técnico Judiciário - Programação de


Sistemas – 2012) Analise o algoritmo a seguir:

Se forem lidos os valores 2, 5, 7, 3 e 4,

a) a saída será 840.


b) haverá um erro, pois o resultado de um cálculo envolvendo a variável r
não pode ser armazenado na própria variável r.
c) a saída será 210.
d) haverá um erro, pois o valor gerado será maior do que uma variável do
tipo inteiro pode suportar.
e) a saída será 0.

Este é um bom exercício para começar.

Três variáveis são criadas, n, r, cont, todos números inteiros. Preparemos o


nosso teste de mesa!

Prof. Victor Dalton


www.estrategiaconcursos.com.br 31 de 73
Tecnologia da Informação para ICMS/SP 2017
Agente Fiscal de Rendas Gestão Tributária
Prof Victor Dalton Aula 06
n r cont

O código inicia atribuindo a r e cont o valor 1.

n r cont
1 1

Na sequência, percebe-se que, enquanto cont for menor que 5, ficaremos


dentro do laço. N é variável inserida pelo usuário, e a questão já nos adianta que
os valores inseridos serão 2, 7, 5, 3 e 4.

Na primeira iteração do laço, r recebe o valor de r vezes n.

n r cont
2 1 1
2

Cont é incrementado em 1, e o laço reinicia, pois a condição permanece


válida. O usuário entra com o valor 7 e r recebe o valor de r vezes n.

n r cont
2 1 1
7 2 2
14

Prof. Victor Dalton


www.estrategiaconcursos.com.br 32 de 73
Tecnologia da Informação para ICMS/SP 2017
Agente Fiscal de Rendas Gestão Tributária
Prof Victor Dalton Aula 06
Já sabe onde isso vai dar?

n r cont
2 1 1
7 2 2
5 14 3
3 70 4
4 210 5
840 6

Concorda comigo? Faça com calma, à mão. Perceba que cont alcança o valor
6, para então interromper o laço.

Dessa forma, r, ao ser impresso, mostra 840 na tela do computador.


Alternativa a).

2ª Questão) (UEL - CMTU – Analista Administrativo – Tecnologia da


Informação - 2011) Observe o trecho do algoritmo a seguir

atribuir 50 a I
atribuir 0 a TOTAL
atribuir 0 a K

enquanto K < I faca

tesinıcio
testessomar 10 a K;
testesatribuir TOTAL+K a TOTAL
testesimprimir(K);
tesfim;

fim-enquanto;

imprimir(TOTAL);

Ao final do processamento, a variável TOTAL e o número de vezes que a K


será impresso são, respectivamente:

a) 100 e 4

b) 150 e 5

c) 150 e 8

d) 150 e 9

e) 210 e 6

Prof. Victor Dalton


www.estrategiaconcursos.com.br 33 de 73
Tecnologia da Informação para ICMS/SP 2017
Agente Fiscal de Rendas Gestão Tributária
Prof Victor Dalton Aula 06
Outra linha de raciocínio!

A estrutura de repetição, novamente, será a que lhe exigirá mais atenção


no código:

enquanto K < I faca

tesinıcio
testessomar 10 a K;
testesatribuir TOTAL+K a TOTAL
testesimprimir(K);
tesfim;

fim-enquanto;

Essa estrutura do tipo “enquanto...faça” faz exatamente isso. Verifica uma


condição, no caso, o valor de K, e, enquanto a condição estiver sendo atendida,
ele executa o código no seu interior. Ao término, volta a verificar a condição e
executa quantas vezes a condição estiver sendo atendida. Daí você conclui que,
dentro desta estrutura, a variável de verificação (no caso, K), deve ser modificada
ao longo da execução. Caso isso não acontecesse, teríamos um “loop infinito”.

Enfim, quando a condição de verificação deixar de ser atendida, a estrutura


“enquanto... faça” será pulada e o restante do código continuará a ser executado.

Voltando ao exercício, temos primeiro algumas atribuições de variáveis:

atribuir 50 a I – I passa a valer 50

atribuir 0 a TOTAL – TOTAL passa a valer 0

atribuir 0 a K – K passa a valer 0

Vejamos agora a estrutura mais delicada, a condicional:

enquanto K < I faca

tesinıcio
testessomar 10 a K;
testesatribuir TOTAL+K a TOTAL
testesimprimir(K);
tesfim;

fim-enquanto;

Um dos objetivos é saber quantas vezes K será impresso. K será impresso


tantas vezes quantas adentrar-se na estrutura de repetição.

Prof. Victor Dalton


www.estrategiaconcursos.com.br 34 de 73
Tecnologia da Informação para ICMS/SP 2017
Agente Fiscal de Rendas Gestão Tributária
Prof Victor Dalton Aula 06
Com K = 0, entrar-se-á uma vez na estrutura. K passará a valer 10 (somar
10 a K). Entrar-se-á na estrutura novamente.

Contando nos dedos da mão (sim, essa é a melhor forma de se contar,


fazemos isso o tempo todo), percebe-se que a estrutura será executada com k =
0,10,20,30,40 ou seja , 5 vezes. Perceba que é K<I, e não K<=I, o que são duas
coisas diferentes!

Tendo metade da resposta, falta agora saber o valor de TOTAL.

Na primeira vez, TOTAL = TOTAL(0) + K(10) -> perceba que soma-se 10 a


K antes da atribuição da soma a total;

Na segunda vez, TOTAL = TOTAL(10) + K(20);

Na terceira vez, TOTAL = TOTAL(30) + K(30);

Na quarta vez, TOTAL = TOTAL(60) + K(40);

Na quinta vez, TOTAL = TOTAL(100) + K(50);

Ainda, observe que o último valor de K, 50, será reprovado na próxima


verificação, por ser igual a I, e toda a estrutura “enquanto” será pulada.
Entretanto, nada impediu que, quando dentro da estrutura, na passagem anterior,
K, que valia 40, passasse a valer 50, pois a verificação somente ocorre no início.

Pulada a estrutura “enquanto...faça”, o valor de TOTAL será impresso, e este


equivale a 150.

Portanto, nossa resposta certa é a letra b).

3ª Questão) (FCC – ARCE – Analista de Regulação - Analista de


Sistemas – 2012) Considere o algoritmo em pseudocódigo:

Prof. Victor Dalton


www.estrategiaconcursos.com.br 35 de 73
Tecnologia da Informação para ICMS/SP 2017
Agente Fiscal de Rendas Gestão Tributária
Prof Victor Dalton Aula 06

Os valores de R1, R2 e R3, após a execução do algoritmo são:

a) R1=0, R2=1, R3=1


b) R1=1, R2=1, R3=0
c) R1=1, R2=0, R3=0
d) R1=0, R2=0, R3=1
e) R1=0, R2=0, R3=0

Prof. Victor Dalton


www.estrategiaconcursos.com.br 36 de 73
Tecnologia da Informação para ICMS/SP 2017
Agente Fiscal de Rendas Gestão Tributária
Prof Victor Dalton Aula 06

Pois bem, pessoal, vamos analisar o nosso exercício.

Antes da execução do algoritmo, propriamente dita, ocorre a declaração de


variáveis.
A,B e C são variáveis lógicas, também chamadas de booleanas, pois podem
assumir apenas dois valores: certo e errado, true ou false, 1 ou 0;
X e Y podem assumir valores de números reais;
R1, R2 e R3 podem assumir valores de números inteiros.

Quando o algoritmo se inicia, ocorre uma série de atribuição de valores. A e


C são verdadeiros, B é falso, X vale 2,5 e Y 3,5.

Na sequência, encontramos nossa primeira estrutura condicional:

se (C ou (X – Y > 0))

OU é uma estrutura do tipo “caso uma das condições seja verdadeira,


tudo é verdadeiro”. X-Y será menor que zero, mas, como C é verdadeiro,
isto significa que a condição foi atendida e o conteúdo condicional será
executado. Então, R1 receberá o valor 1.

Nossa segunda estrutura condicional diz que:

se (((A e B) ou C) e ((X > Y) ou não(A)))

Mais uma vez, temos que descobrir se a sentença nos retorna


verdadeiro ou falso, para executarmos o então ou o senão. Como a
nossa ao matemática nos ensina, vamos resolver os parênteses de dentro
para fora:

A e B -> B é falso, logo, A e B -> falso;


falso ou C -> C é verdadeiro, logo, falso ou C -> verdadeiro;
X>Y é falso;
não(A) é falso, uma vez que A é verdadeiro;
falso ou falso é falso;

Então, aquela complexa estrutura condiciona ficou igual a:

se (verdadeiro e falso)

Assim sendo, a sentença é falsa e o próximo passo do algoritmo será


executar o senão. Logo, R2 recebe o valor 0.

Prof. Victor Dalton


www.estrategiaconcursos.com.br 37 de 73
Tecnologia da Informação para ICMS/SP 2017
Agente Fiscal de Rendas Gestão Tributária
Prof Victor Dalton Aula 06
Por fim, temos a terceira estrutura condicional, cuja sentença é a mais
extensa:
se (( B ou (X-Y<0)) e ((B e não(A)) ou (não(C)))

Vamos estudá-la em detalhes, e reescrevendo-a a cada passo.

X-Y < 0 -> 2,5 – 3,5 < 0 -> verdadeiro;


não(A) -> não (verdadeiro) -> falso;
não(C) -> não (verdadeiro) -> falso;
B -> falso;

Com isso, temos:

se (( falso ou verdadeiro) e ((falso e falso) ou falso))

falso ou verdadeiro -> verdadeiro;


falso e falso -> falso; -> falso ou falso -> falso;

E a sentença se resume a se (verdadeiro e falso), o que nos leva a


falso, e, novamente, a condição executada será o senão. Isto posto, R3
recebe o valor 0.

Finalizado o algoritmo, R1 vale 1, R2 e R3 valem 0.

Conseguiu acompanhar? Um programa nada mais é que uma série de


procedimentos simples, que, uma vez unidos, se tornam um todo altamente
complexo. Portanto, para “debugá-lo”, o procedimento é decompor o problema
até o nível que você enxerga passos simples, e assim consegue analisá-lo.

Resposta certa, alternativa c).

4ª Questão)(FCC – TRF/4ª Região – Analista Judiciário – Informática


– 2010) Considere:

Prof. Victor Dalton


www.estrategiaconcursos.com.br 38 de 73
Tecnologia da Informação para ICMS/SP 2017
Agente Fiscal de Rendas Gestão Tributária
Prof Victor Dalton Aula 06

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


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

a) 6.
b) 22.
c) 86.
d) 0.
e) 342.

E continuemos a nos exercitar!

Este exercício é um pouco mais complexo, pois possui uma estrutura de


repetição dentro da outra. Tal visualização é possível por causa da identação,
que é esse recurso visual de tabular mais à direita as estruturas que devem ser
executadas dentro de outras estruturas.

Quando nos deparamos com esse tipo de exercício, a melhor coisa que se
pode fazer, para não se perder durante a “debugação”, é fazer uma tabela com
todas as variáveis e os valores que elas assumem ao longo da execução do
programa. Assim:

Prof. Victor Dalton


www.estrategiaconcursos.com.br 39 de 73
Tecnologia da Informação para ICMS/SP 2017
Agente Fiscal de Rendas Gestão Tributária
Prof Victor Dalton Aula 06
N 4
X 2
CONTA
CONTB
EXP
RESP 2

Agora, toda vez que alguma variável sofrer uma modificação, basta escrevê-
la na tabela, para não se perder. Sem mais rodeios, vamos encarar o algoritmo:
Com N,X e RESP recebendo seus valores iniciais, temos a primeira estrutura
para. Nela, CONTA recebe o valor 2 e tal estrutura deverá ser repetida até que
CONTA alcance o valor de N (ou seja, quando o valor de CONTA for maior ao valor
de N a estrutura deverá ser pulada). Detalhe: a estrutura tem passo 2, ou seja,
o contador incrementa de 2 em 2 inteiros. Como 2 é menor do que 4, entra-se.
Ao entrar no primeiro para, EXP recebe o valor de X, 2, CONTB recebe o
valor de 1, e precisamos entrar na segunda estrutura para. Mantenhamos o
controle do valor das variáveis!

N 4
X 2
CONTA 2
CONTB 1
EXP 2
RESP 2

No segundo para, a estrutura deverá ser executada até que CONTB atinja o
VALOR de CONTA-1, com passo 1. Como 1 é igual a 1, entra-se.
Dentro do segundo para, EXP recebe o próprio valor multiplicado por X, ou
seja, 2*2, que é igual a 4. EXP passa a valer 4.
No fim_para, volta-se ao seu início, incrementa-se o contador e verifica-se
a condição novamente. CONTB agora vale 2, CONTA -1 continua sendo 1. Logo, o
segundo para deve ser pulado.
Ainda estamos dentro do primeiro para! Chegamos á linha remanescente,
na qual RESP deverá receber seu próprio valor acrescido de EXP. 2 + 4, 6. Você
continua controlando as variáveis?

N 4
X 2
CONTA 2
CONTB 1 2
EXP 2 4
RESP 2 6

Prof. Victor Dalton


www.estrategiaconcursos.com.br 40 de 73
Tecnologia da Informação para ICMS/SP 2017
Agente Fiscal de Rendas Gestão Tributária
Prof Victor Dalton Aula 06
Chegamos ao fim do primeiro ciclo do primeiro para. Logo, devemos
incrementar o contador, de passo 2, e tentar executar a iteração novamente.

CONTA agora vale 4, ficando igual a N. Podemos prosseguir.


EXP novamente assume o valor 2, e CONTB volta a assumir o valor 1. Tudo
sob controle?

N 4
X 2
CONTA 2 4
CONTB 1 2 1
EXP 2 4 2
RESP 2 6

No segundo para CONTB vale 1 e deverá ser incrementado até CONTA-1, ou


seja, até 3.

Na prática, EXP receberá o seu próprio valor multiplicado por X várias vezes.
Quando CONTB = 1, EXP será 2*2, 4;
Quando CONTB = 2, EXP será 4*2, 8;
Quando CONTB = 3, EXP será 8*2, 16;
Quando CONTB = 4, pula-se o segundo para.

Acompanhou?

N 4
X 2
CONTA 2 4
CONTB 1 2 1 1 2 3 4
EXP 2 4 2 4 8 16 16
RESP 2 6

Pulado o segundo para, executa-se a última linha do primeiro para,


atribuindo a RESP o seu próprio valor acrescido de EXP. 6 + 16, 22.

Agora CONTA passou a valer 6, por causa do passo 2, e como 6 é maior que
4, o primeiro para deve ser pulado. Mais controle!

N 4 4
X 2 2
CONTA 2 4 6
CONTB 1 2 1 1 2 3 4

Prof. Victor Dalton


www.estrategiaconcursos.com.br 41 de 73
Tecnologia da Informação para ICMS/SP 2017
Agente Fiscal de Rendas Gestão Tributária
Prof Victor Dalton Aula 06
EXP 2 4 2 4 8 16 16
RESP 2 6 22

RESP foi impresso, com o valor 22, e você já sabe os valores finais de todas
as variáveis do código. É importante manter esse controle, para que você não se
perca.

Resposta certa, alternativa b).

5ª Questão) (FCC – METRÔ/SP – Analista Desenvolvimento Gestão


Júnior – Ciências da Computação - 2012) Analise a estrutura abaixo.

Considere mod o operador que calcula o resto da divisão entre dois números
inteiros.
Por meio de um teste de mesa é possível constatar que o portugol mostrado
representa a resolução da equação:

Prof. Victor Dalton


www.estrategiaconcursos.com.br 42 de 73
Tecnologia da Informação para ICMS/SP 2017
Agente Fiscal de Rendas Gestão Tributária
Prof Victor Dalton Aula 06

a) resp = 0 + 1 – 2 + 3 – 4 + 5 – ... (+ ou –) n
b) resp = 0 + 1 – 22 + 34 – 46 + 5n
c) resp = 0 – 1 – 2 – 3 – 4 – 5 – ... – n
d) resp = 0 + 1! – 2! + 3! – 4! + 5! – n!
e) resp = 0 – 1 + 2 – 3 + 4 – 5 + ... – n

Esse código já está com cara de que vai dar trabalho! Então, logo pra início
de conversa, vamos fazer a nossa tabelinha com as variáveis do código:
N ?
CONT 1
RESP 0
S -1

N, pelo visto, será o parâmetro inserido pelo usuário. A função leia(n) nos
mostra isso. Logo, toda vez que esse programa for executado, leia(n) trará o
valor de N para o programa e continuará a sua execução.

O algoritmo começa pra valer na estrutura de repetição “enquanto...faça”.


Esta, por sua vez, já inicia com uma estrutura condicional: se (cont mod 2 = 0).

mod, como o próprio enunciado da questão informa, é o operador que calcula


o resto da divisão entre dois números inteiros. Saber se X mod 2 = 0, por exemplo,
significa saber se o resto da divisão de X por 2 é zero ou não. Na prática, serve
para analisar se o número é par ou ímpar, percebeu? É só analisar:

1 mod 2 = 0 -> falso;


2 mod 2 = 0 -> verdadeiro;
3 mod 2 = 0 -> falso;
4 mod 2 = 0 -> verdadeiro;

Programação é isso, pequenos raciocínios o tempo todo. Continuemos:

Na sequência, temos um então, executado quando o contador for par, e um


senão, executado quando o contador for ímpar.

Quando o contador é par, a resp é adicionado o valor do contador com sinal


negativo (resp <- resp + cont*s);
Por sua vez, quando o contador é ímpar, a resp é adicionado o valor do
próprio contador, sem modificações (resp <- resp + cont);

Já conseguiu enxergar isso? Se você estiver enxergando, já será um


excelente sinal. Veja como a tabela evolui ao longo de três contagens:

Prof. Victor Dalton


www.estrategiaconcursos.com.br 43 de 73
Tecnologia da Informação para ICMS/SP 2017
Agente Fiscal de Rendas Gestão Tributária
Prof Victor Dalton Aula 06

N ? ? ? ?
CONT 1 1 2 3
RESP 0 1 (0+1) -1(0+1-2) 2(0+1-2+3)
S -1 -1 -1 -1

O procedimento do algortimo é esse. Quando contador(CONT) ultrapassa o


valor de N,a estrutura “enquanto...faça” é abortada e o valor de RESP é impresso.
Assim sendo, percebemos que resp representa a solução da equação 0 + 1
- 2 + 3 - 4 + 5 ... (+ ou -) n.

Alternativa a).

6ª Questão) (UEL - CELEPAR – Analista de Informática Júnior –


Desenvolvimento de Sistemas - 2009) O seguinte algoritmo implementa um
método de ordenação:

Assinale a alternativa que indica quantas vezes o trecho destacado do


algoritmo será executado, se o algoritmo for executado recebendo como
parâmetros {6, 5, 4, 3, 2, 1} e 6.

a) 0

b) 1
Prof. Victor Dalton
www.estrategiaconcursos.com.br 44 de 73
Tecnologia da Informação para ICMS/SP 2017
Agente Fiscal de Rendas Gestão Tributária
Prof Victor Dalton Aula 06
c) 3

d) 5

e) 6

Pessoal, esta aqui é a nossa questão desafio. Se você entender este código,
não existe algortimo que você não consiga decifrar na prova. Além dos conceitos
que vimos até agora, este código também trabalha com vetores, que nada mais
são do que um conjunto de variáveis organizadas unidimensionalmente.

ordena (int vet[], int n) é uma função que recebe como parâmetros um
vetor de inteiros e um inteiro. Lembro que o que caracteriza um vetor (array) são
os colchetes ([]), e não o nome “vet”. O nome da variável é apenas o nome dela.
O vetor que a questão está passando é {6,5,4,3,2,1} e o inteiro é 6, conforme
enunciado.

Ao iniciar, a função cria 4 variáveis do tipo inteiro, i,j,pos e aux, sem definir
valor a elas.

Na sequência temos uma grande estrutura de repetição, que engloba uma


estrutura de repetição e uma condicional. A primeira executará inicializando o
valor de i com 1, e executará enquanto 1 for menor que n-1, ou seja , 5. Vamos
precisar da nossa tabela auxiliar com as variáveis:

VET[] {6,5,4,3,2,1}
N 6
I
J
POS
AUX

Ao iniciar, atribui-se à variável pos o valor de i, que é 1. Na sequência, outra


estrutura de repetição! Vá acompanhando com a mão, rabisque a lápis se
necessário, mas acompanhe o código linha a linha!

E é isso mesmo. Ao entrar em uma estrutura de repetição dentro de uma


outra estrutura de repetição, a estrutura anterior só continua a sua execução após
o término da interna. E, quando a estrutura externa retomar outro “loop”, a
interna será executada novamente, como se nada tivesse acontecido antes.
Acompanhe!

Na segunda estrutura condicional, j começa com o valor de i + 1 (2), podendo


ir até n (6). Vamos continuar anotando?

No primeiro “loop”, tanto do primeiro para quanto do segundo para, temos:

Prof. Victor Dalton


www.estrategiaconcursos.com.br 45 de 73
Tecnologia da Informação para ICMS/SP 2017
Agente Fiscal de Rendas Gestão Tributária
Prof Victor Dalton Aula 06

VET[] {6,5,4,3,2,1}
N 6
I 1
J 2
POS 1
AUX

Perceba que vet[1] é 6, vet[2] é 5, ..., e vet[6] é 1. Normalmente em


pseudocódigo é assim.

No primeiro se, que ocorre em se (vet[pos]> vet[j]), ocorre uma


comparação. Caso o valor de vet[pos], pos valendo 1, seja maior que o valor
de vet[j], j valendo 2, ele atribuirá a pos o valor de j, 2, atribuirá a j o valor de
j + 1 (3). Está ficando bem difícil, por isso desenhe em folha de papel à parte,
continue acompanhando com a tabelinha e escreva os valores das variáveis e
modifique eles à medida que o código modificá-la. Somente assim você conseguirá
acompanhar! Como essa questão apresentou um vetor invertido, na verdade todo
o vetor vai ser percorrido para verificação na primeira passagem, encerrando
somente quando pos=6 e j=7. E agora a mágica começa.

VET[] {6,5,4,3,2,1}
N 6
I 1
J 7
POS 6
AUX

Após a segunda estrutura de repetição “para...faça”, será verificado se pos é


diferente de i(na próxima estrutura condicional). Perceba que ainda estamos
dentro da primeira estrutura “para...faça”. Não deixe de acompanhar a explicação
lendo o código!

Como pos vale 6 e i ainda vale 1, o conjunto dentro do quadrado trocará os


valores de vet[i] e vet[pos], usando uma variável auxiliar como ferramenta.
Conseguiu captar? vet, que é {6,5,4,3,2,1} passou a ser {1,5,4,3,2,6}. Olha a
função ordena trabalhando!

Feito isso, i será incrementado em 1, passando a valer 2, e o primeiro


“para...faça” continua a trabalhar.

pos recebe o valor de i (2), e o outro “para....faça” recomeça, com j=3,... e


por aí vai, de maneira análoga ao raciocínio desenvolvido anteriormente. Vou
deixar que você trabalhe o raciocínio no “braço”.

Prof. Victor Dalton


www.estrategiaconcursos.com.br 46 de 73
Tecnologia da Informação para ICMS/SP 2017
Agente Fiscal de Rendas Gestão Tributária
Prof Victor Dalton Aula 06
Haverão mais duas modificações no vetor vet: de {1,5,4,3,2,6} ele ainda irá
a {1,2,4,3,5,6} e a {1,2,3,4,5,6}, ficando ordenado.

Por fim, a resposta correta é a alternativa c).

Rascunhe no braço a resolução! Parece difícil, mas a solução para decifrar


algoritmos complicados é compartimentar os problema em pequenos problemas
fáceis, fazendo passo a passo, linha a linha, e mantendo o controle dos valores de
TODAS as variáveis.

Tudo bem ter achado esse exercício difícil, e ele realmente o é. Se você tiver,
ao menos, acompanhado esse raciocínio, está de ótimo tamanho.

(CESPE – SERPRO – Técnico – Programação - 2008) A respeito da lógica


de programação, que é fundamental para o desenvolvimento de códigos por meio
de linguagens de programação, julgue os itens subsequentes.

7 Um algoritmo pode ser definido como uma sequência finita de


passos que levam à execução de determinada tarefa ou conjunto de
tarefas.

Correta. Definição clássica de algoritmo.

8 Na lógica de programação, a instrução é o comando principal que


indica a um programa uma condição estrutural a repetir.

Errada. A impressão é que faltou definir qual seria a instrução. While, for
e repeat until são instruções que definem uma estrutura a ser repetida dentro
de um programa.

9 Um diagrama de blocos é uma forma padronizada para se


representar os passos lógicos de determinado processamento. Por meio
do diagrama, pode ser utilizada uma sequência de símbolos, com
significado bem definido, para auxiliar a representação dos passos de um
processamento.

Prof. Victor Dalton


www.estrategiaconcursos.com.br 47 de 73
Tecnologia da Informação para ICMS/SP 2017
Agente Fiscal de Rendas Gestão Tributária
Prof Victor Dalton Aula 06
Correta. Os diagramas são ferramentas úteis para representar visualmente
a execução de um algoritmo.

10 Os operadores relacionais são utilizados para comparar números.


Para se comparar sequências de caracteres (strings), são utilizados os
operadores lógicos, que retornam valores verdadeiro e falso.

Errada. É possível comparar strings (texto) utilizando operadores


relacionais, que também retornam verdadeiro ou falso. Maior ou menor
comparam tamanho, enquanto igual ou diferente comparam conteúdo.

11 Em lógica de programação, uma constante é um valor fixo que não


se modifica ao longo do tempo durante a execução de um programa. Essa
constante pode ser numérica, lógica ou literal.

Correta. A constante não pode ser modificada, apenas a variável.

(CESPE – SERPRO – Analista – Suporte Técnico - 2013) Julgue os itens


seguintes, relativos a programação e lógica de programação.

12 Parâmetros são pontos de comunicação entre módulos de um


programa. A passagem de parâmetros, que consiste na substituição do
parâmetro formal pelo parâmetro real, pode ser realizada por valor ou por
referência.

Correta. Parâmetros são úteis, principalmente, em funções.

13 Segundo o pseudocódigo abaixo, um vetor de 100 números é lido


e, em seguida, é montado um segundo vetor a partir dos valores do
primeiro vetor multiplicados por 3.

início

VET1,VET2 : vetor [1..100] numérico

CONTADOR : numérico
Prof. Victor Dalton
www.estrategiaconcursos.com.br 48 de 73
Tecnologia da Informação para ICMS/SP 2017
Agente Fiscal de Rendas Gestão Tributária
Prof Victor Dalton Aula 06
para CONTADOR de 1 até 100 faça

leia "Digite um número: ",VET1[CONTADOR]

VET2[CONTADOR] (VET1[CONTADOR] * 3)

fim-para

fim

Errada. A montagem do segundo vetor ocorre paralelamente à montagem


do primeiro vetor (não em seguida, como sugere a assertiva), já que a leitura dos
valores do vetor ocorre dentro do laço. Faça o teste de mesa se tiver dúvidas!

(CESPE – STM – Analista Judiciário – Análise de Sistemas – 2011 -


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

14 Procedimento ou sub-rotina é um conjunto de instruções que


realiza determinada tarefa. A diferença de um procedimento para uma
função é que as funções podem ser utilizadas em expressões, como se
fossem variáveis, pois elas retornam valores associados ao seu nome.

Correta. Funções facilitam a vida do programador, principalmente para


implementar operações matemáticas específicas.

15 Na passagem de parâmetros por referência, o valor do parâmetro


real é copiado para o parâmetro formal do módulo, preservando, assim, o
valor original do parâmetro. Na passagem de parâmetros por valor, toda
alteração feita nos parâmetros formais reflete-se nos parâmetros reais.

Errada. Inversão de conceitos! “Na passagem de parâmetros por valor,


o valor do parâmetro real é copiado para o parâmetro formal do módulo,
preservando, assim, o valor original do parâmetro. Na passagem de
parâmetros por referência, toda alteração feita nos parâmetros formais
reflete-se nos parâmetros reais.”

16 Nas estruturas de controle, tais como as estruturas de seleção


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

Prof. Victor Dalton


www.estrategiaconcursos.com.br 49 de 73
Tecnologia da Informação para ICMS/SP 2017
Agente Fiscal de Rendas Gestão Tributária
Prof Victor Dalton Aula 06
Correta. A verificação das condições ocorre no comando if.

(CESPE – Banco da Amazônia – Técnico Científico – Análise de


Sistemas - 2012)

17 O comando while utilizado em algoritmos implementa laços com


teste antecipado de condições, testando a condição e, sendo ela
verdadeira, executando o bloco de comandos.

Correta. Já o repeat until verifica a condição depois da execução da


estrutura.

18 Quando um break é encontrado dentro de um laço for, a execução


do código é interrompida e o programa é finalizado.

Errada. A execução do código é interrompida e o laço é encerrado,


retomando a execução normal do programa, imediatamente após o laço.

(CESPE – UNIPAMPA – Analista de Tecnologia da Informação – Rede


e Suporte - 2009) Em relação aos conceitos de lógica de programação utilizados
para a construção de algoritmos, julgue os próximos itens.

19 Valores que sejam armazenados em variáveis locais de


determinado procedimento ou função não podem ser utilizados em outros
procedimentos ou funções.

Errada. Não há problema algum, caso algum procedimento ou função seja


chamado dentro do procedimento ou função que contenha a variável local. Abaixo,
segue o exemplo, já visto, do procedimento REFERENCIA, que, sem nenhum
problema, passa a sua variável local como parâmetro para outro procedimento, e
o algoritmo funciona normalmente.

Algoritmo REFERENCIA
VAR TESTE:inteiro
INICIO
TESTE 30;
MANIPULA_VARIAVEL(TESTE);
ESCREVA(TESTE);

Prof. Victor Dalton


www.estrategiaconcursos.com.br 50 de 73
Tecnologia da Informação para ICMS/SP 2017
Agente Fiscal de Rendas Gestão Tributária
Prof Victor Dalton Aula 06
FIM

Algoritmo MANIPULA_VARIAVEL(X:inteiro)
INICIO
X X + 10;
ESCREVA(X);
FIM

20 Estruturas de repetição permitem que uma sequência de


comandos seja executada repetidamente até que determinada condição
de interrupção seja satisfeita. É possível que, em determinada execução
do algoritmo, a sequência de comandos não seja executada nenhuma vez.

Correta. Se um comando while verificar uma condição que seja falsa logo
na primeira verificação, a estrutura de repetição é pulada sem nenhuma execução.

21 Registros são estruturas consideradas heterogêneas porque são


compostos de dados que, apesar de serem logicamente relacionados, não
têm necessariamente o mesmo tipo.

Correta. Registros são utilizados em programação estruturada. Seu


equivalente, na programação orientada a objetos, é o objeto.

(CESPE – Banco da Amazônia – Técnico Científico – Redes e


Telecomunicações - 2010) Julgue os itens seguintes, relativos à lógica de
programação e construção de algoritmos.

22 Na definição de uma função, a passagem de parâmetros por


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

Correta.

Prof. Victor Dalton


www.estrategiaconcursos.com.br 51 de 73
Tecnologia da Informação para ICMS/SP 2017
Agente Fiscal de Rendas Gestão Tributária
Prof Victor Dalton Aula 06
23 É possível implementar procedimentos cujos valores gerados
podem ser armazenados em variáveis que garantem sua existência
mesmo após o término da execução de tais procedimentos.

Correta. Basta armazenar esses valores em variáveis globais, que deverão


estar fora de todas as funções ou procedimentos do programa.

24 Estruturas de repetição são usadas para que determinado bloco


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

Correta. Quando se utiliza o repeat until, o bloco de comandos será


executado pelo menos uma vez.

25 Variáveis declaradas dentro de funções ou procedimentos são


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

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

26ª Questão) (FCC – TCE/PR – Analista de Controle –Informática –


2011) Em relação à Programação Orientada a Objetos, é INCORRETO afirmar:

a) Polimorfismo pode ser entendido como um conceito complementar ao de


herança. Assim, no polimorfismo é possível enviar a mesma mensagem a
diferentes objetos e cada objeto responder da maneira mais apropriada para sua
classe.
b) Uma agregação representa um todo que é composto de várias partes e
constitui um relacionamento de contenção; se qualquer uma das partes for
destruída, as demais partes também o serão.
c) Interfaces são como as classes abstratas, mas nelas não é possível
implementar nenhum método, apenas declarar suas assinaturas; uma classe ao
implementar uma interface deverá escrever todos os seus métodos.
d) No contexto da herança, uma instância da subclasse é, também, uma
instância da superclasse.

Prof. Victor Dalton


www.estrategiaconcursos.com.br 52 de 73
Tecnologia da Informação para ICMS/SP 2017
Agente Fiscal de Rendas Gestão Tributária
Prof Victor Dalton Aula 06
e) A aplicação do polimorfismo utilizando interfaces requer que o método
polimórfico seja definido na classe ancestral como abstract para possibilitar sua
redefinição nas classes descendentes.

O erro esta questão vem lá dos conceitos de UML. A agregação e a


composição são formas de associação entre objetos. O item descreve a
composição, sendo que, na agregação, a extinção de um objeto não elimina os
demais.
Para diferenciar agregação e composição eu sempre gosto de utilizar o
exemplo do time de futebol e do carro. Se você excluir o objeto “time de futebol”,
os jogadores permanecem. Já a exclusão do objeto “carro” leva consigo os objetos
“motor”, “pneus”, “câmbio”....

A alternativa errada é a letra b). As demais assertivas estão corretas.

27ª Questão) (FCC – INFRAERO – Analista Superior III –Analista de


Sistemas - Desenvolvimento e Manutenção – 2011) Sobre orientação a
objetos, é correto afirmar:

a) Uma classe é o projeto do objeto. Ela informa à máquina virtual como criar
um objeto de um tipo específico. Cada objeto criado a partir da classe terá os
mesmos valores para as variáveis de instância da classe.
b) Um relacionamento de herança significa que a superclasse herdará as
variáveis de instância e métodos da subclasse.
c) Uma interface é uma classe 100% abstrata, ou seja, uma classe que não
pode ser instanciada.
d) Os objetos têm seu estado definido pelos métodos e seu comportamento
definido nas variáveis de instância.
e) A principal regra prática do encapsulamento é marcar as variáveis de
instância como públicas e fornecer métodos de captura e configuração privados.

Marque a incorreta, marque a correta.... questões sobre POO, via de regra,


são teóricas. Indo direto ao ponto:

a) Errada. As variáveis de instância possuem valor específico ao objeto. As


variáveis de classe possuem um valor comum à classe;
b) Errada. A subclasse herda da superclasse;
c) Certa.
d) Errada. Estado -> atributos. Comportamento -> métodos;
e) Errada. As variáveis de instância são privadas e os métodos de captura e
configuração (get e set) são públicos.

Prof. Victor Dalton


www.estrategiaconcursos.com.br 53 de 73
Tecnologia da Informação para ICMS/SP 2017
Agente Fiscal de Rendas Gestão Tributária
Prof Victor Dalton Aula 06

28ª Questão) (ESAF – Analista de Finanças e Controle –


Desenvolvimento de Sistemas de Informação – 2008) A programação
orientada a objetos é baseada em diversos conceitos, tais como encapsulamento,
herança, polimorfismo e abstração. Com relação a esses conceitos, é correto
afirmar que
a) o conceito de encapsulamento é alcançado por meio da definição da
visibilidade pública aos atributos e métodos.
b) herança é um mecanismo que permite que uma classe herde todo o
comportamento e os atributos de outra classe. Em Java, pode-se implementar
tanto a herança única quanto a herança múltipla.
c) interface pode ser considerada como a forma com que um objeto se
apresenta para outros, no que diz respeito aos seus atributos e métodos. Em Java,
uma mesma classe não pode implementar mais de uma interface.
d) polimorfismo é o uso de um mesmo nome para identificar diferentes
implementações dos métodos. Seu uso é comum na definição de construtores, em
que os mesmos podem ser implementados em diferentes versões para as
diferentes formas de se instanciar a classe.
e) para uma classe ser considerada abstrata, todos os seus métodos devem
ser abstratos. Em Java, para se definir uma classe abstrata deve-se utilizar a
palavra chave “abstract” no início de sua declaração.

Vamos treinar!
a) A visibilidade a ser atribuída é a privada. Errada;
b) C++ permite herança múltipla, Java não. Herança múltipla seria algo
como, por exemplo, criar uma subclasse SofaCama, que herdasse,
ao mesmo tempo, as superclasses Sofa e Cama. Isso é herança
múltipla. Entretanto, se a classe Funcionario herda Pessoa e Pessoa
herda Mamifero que herda SerVivo, todos ao mesmo tempo, isso não
é Herança Múltipla. Errada;
c) Java procura contornar o problema de herança múltipla permitindo a
implementação de múltiplas interfaces. Errada;
d)Correta. A sobrecarga de construtores é uma das formas mais
comuns de aplicação do polimorfismo. Um exemplo de sobrecarga de
construtores está na classe Pessoa, onde existe um Pessoa() e Pessoa(String
novo_nome, String numerocpf, int idadeatual). Quando se executa o
primeiro, cria-se uma pessoa com o atributo nome preenchido com “Nome
Genérico”, e quando se executa o segundo , devem ser passados
parâmetros(String novo_nome, String numerocpf, int idadeatual), para que
a pessoa criada tenha os atributos nome, cpf e idade preenchidos com os
valores passados em novo_nome, numerocpf e idadeatual.
e) Basta que um método seja abstrato para que a classe possa ser
considerada abstrata. Errada.

Portanto, nossa alternativa correta é a letra d).

Prof. Victor Dalton


www.estrategiaconcursos.com.br 54 de 73
Tecnologia da Informação para ICMS/SP 2017
Agente Fiscal de Rendas Gestão Tributária
Prof Victor Dalton Aula 06

29ª Questão) (FCC – INFRAERO – Analista Superior III –Analista de


Sistemas - Desenvolvimento e Manutenção – 2011) Em Sistemas Orientados
a Objeto (OOP), a utilização de polimorfismo contribui para a extensão das
funcionalidades do sistema, pois

a) favorece a reutilização de código devido ao encapsulamento de suas


operações e atributos.
b) permite que uma classe possa herdar operações e atributos de outra
classe, introduzindo suas próprias operações e atributos.
c) a abstração na geração de novas classes permite que novos atributos
herdem as características da superclasse.
d) possibilita a utilização de uma mesma operação para tarefas diferentes,
determinadas por sua assinatura ou sobrecarga da operação original.
e) permite que a mesma mensagem seja enviada a objetos de classes
distintas, favorecendo a reutilização de código.

Várias alternativas confusas, e inclusive nonsense. Mas quero usar esta


questão para chamar sua atenção para um conceito interessante.

A sobrecarga de métodos pode ser considerada um Polimorfismo Ad-Hoc.


Embora os principais tratem a sobrecarga de métodos como uma característica
distinta do polimorfismo, professores e estudantes discutem esse “polimorfismo
ad-hoc” mundo afora (ou seja, fóruns afora). A próxima questão, de outra banca,
vai justamente diferenciar o polimorfismo da sobrecarga de métodos.

Mas Victor, então eu devo ou não devo considerar a sobrecarga de métodos


como uma forma de polimorfismo?

Eu já disse antes e digo novamente: não estamos aqui para nos formarmos
experts em programação, estamos aqui para dizermos para a banca o que ela
quer ouvir. A FCC parece abraçar esse conceito, mas eu não me surpreenderia se
uma outra questão da mesma banca se opusesse à mesma ideia. O mais
importante é você saber que a dobradinha polimorfismo/sobrecarga de métodos
pode querer atrapalhar a sua vida em provas.

Resposta certa, alternativa d).

30ª Questão) (UEL – Agência de Fomento do Paraná – Analista de


Tecnologia da Informação – 2010) Analise os métodos da classe a seguir:

Prof. Victor Dalton


www.estrategiaconcursos.com.br 55 de 73
Tecnologia da Informação para ICMS/SP 2017
Agente Fiscal de Rendas Gestão Tributária
Prof Victor Dalton Aula 06

class c{
void m(int i);
void m(float i);
void m(double i);
}

Esses métodos constituem um exemplo de

a) polimorfismo
b)herança múltipla
c)métodos virtuais
d)métodos privados
e)sobrecarga de métodos

Uma questão que cobra de você uma visualização na prática dos conceitos
POO, diferenciando o polimorfismo da sobrecarga de métodos.

Métodos com mesmo nome, mudando apenas o parâmetro passado


(assinaturas diferentes), é a sobrecarga.Letra e).

31ª Questão) (ESAF – Analista de Finanças e Controle –


Desenvolvimento de Sistemas de Informação – 2012 - adaptada)
Acoplamento é uma medida

a) da extensão do procedimento.
b) do quanto uma classe depende ou está relacionada à outra.
c) da intensidade das ligações entre procedimentos.
d) das relações entre atributos.
e) das ligações redundantes entre formas de processamento.

Acoplamento mede o quanto uma classe depende ou está relacionada à


outra. Uma característica desejável no software orientado a objetos é o
acoplamento fraco. Seu principal “vilão” é a herança, e cabe aos analistas de
sistema e aos programadores a dosagem adequada desta ferramenta, sob pena
de tornar o software difícil de manutenir.

Desta forma, a resposta correta é a alternativa b).

32ª Questão) (ESAF – Analista de Finanças e Controle –


Desenvolvimento de Sistemas de Informação – 2008) Com relação aos
conceitos de programação orientada a objetos, é correto afirmar que

Prof. Victor Dalton


www.estrategiaconcursos.com.br 56 de 73
Tecnologia da Informação para ICMS/SP 2017
Agente Fiscal de Rendas Gestão Tributária
Prof Victor Dalton Aula 06

a) métodos abstratos são aqueles que não devem ser redefinidos em classes
derivadas, devem ser herdados tal como foram definidos.
b) métodos estáticos são aqueles que, ao serem executados, não acessam
atributos de instância da classe.
c) métodos finais, também conhecidos como finalizadores ou destrutores,
são chamados na destruição de uma instância.
d) métodos construtores são métodos chamados sobre um objeto quando ele
é criado. Em Java, os construtores têm o mesmo nome da classe da qual são
membros e o tipo retornado por eles é especificado na sua definição.
e) métodos de classe são aqueles que executam operações que afetam
objetos individuais da classe.

Vamos ver mais ideias analisando as alternativas.


a) Métodos abstratos são métodos definidos e não implementados nas
classes abstratas, devendo serem implementadas por suas subclasses.
Se “public class Pessoa” fosse “public abstract class Pessoa”, Pessoa seria
uma classe abstrata, e não poderiam existir objetos Pessoa. Mas objetos
Funcionario, herdando os atributos de Pessoa, poderiam existir sem
problemas. Errada;
b) Métodos estáticos são métodos atrelados à classe (métodos de
classe), e que não exigem a instância de um objeto para a sua execução.
Desta forma, não pode o método manipular um atributo da classe,
mesmo porque não faria sentido um método sair modificando atributos
simultaneamente em todas as instâncias da classe, ou até mesmo tentar
modificar um atributo sem nenhum objeto instanciado. Correta!
c) Métodos finais são métodos declarados em uma superclasse que não
poderão ser sobrescritos em uma subclasse. Não se relacionam com
destrutores, que são métodos executados quando da exclusão de um
objeto. Se “public void setNome(String novo_nome)” fosse “public final
void setNome(String novo_nome)”, a classe Funcionario não poderia
escrever, dentro dela um outro método “public void setNome(String
novo_nome)”, ou seja, não poderia sobrescrever o método da
superclasse. Errada;
d) A sentença estaria correta, mas construtor não necessita especificar
nenhum tipo, uma vez que seu nome é o nome da própria classe a ser
instanciada. Errada;
e) Conforme falado na alternativa b, métodos de classe não operam
sobre atributos da classe, nem dos objetos instanciados. Errada;

33ª Questão) (FCC – Agente Fiscal de Rendas – Tecnologia da


Informação - 2009) Os valores das propriedades de um objeto em um
determinado instante, que podem mudar ao longo do tempo, representam

Prof. Victor Dalton


www.estrategiaconcursos.com.br 57 de 73
Tecnologia da Informação para ICMS/SP 2017
Agente Fiscal de Rendas Gestão Tributária
Prof Victor Dalton Aula 06
a) a instância de uma classe.
b) a identidade de um objeto.
c) o estado de um objeto.
d) o comportamento de um objeto.
e) as operações de uma classe.

Um objeto instanciado (o que é pleonasmo, pois todo objeto é uma classe


instanciada), possui duas características-chave: seu estado e seu comportamento.
O comportamento de um objeto é refletido pelos métodos que ele pode
chamar, sejam eles nativos da classe ou herdados de superclasses.
O estado do objeto, por sua vez, são os valores das propriedades de um
objeto em um determinado instante. Por exemplo, um objeto Pessoa com nome
= “José”, cpf=”123.456.789-00” e idade=18 encontra-se em um determinado
estado. Caso mudemos o nome para “João”, modificamos o estado do objeto.
Compreendido?

Resposta certa, letra c).

34ª Questão) (CETRO – SEMSA – Especialista em Saúde – Analista de


Sistemas - 2012) Quanto à orientação a objetos, analise as assertivas abaixo.

I. O polimorfismo permite que uma mesma classe possa ser utilizada em


diferentes contextos.

II. Na composição, quando uma instância é removida, suas partes também


deverão ser removidas.

III. Na agregação, quando uma instância for removida, suas partes não
necessariamente deverão ser removidas.

É correto o que se afirma em

(A) I e III, apenas.

(B) I e II, apenas.

(C) II e III, apenas.

(D) I, II e III.

(E) II, apenas.

Analisando as assertivas:

Prof. Victor Dalton


www.estrategiaconcursos.com.br 58 de 73
Tecnologia da Informação para ICMS/SP 2017
Agente Fiscal de Rendas Gestão Tributária
Prof Victor Dalton Aula 06
I. O polimorfismo permite que uma mesma classe possa ser utilizada em
diferentes contextos. – correto. No polimorfismo, um mesmo método pode ser
definido de formas diferentes. Associado à herança, podem diferentes classes
“filhas” de uma mesma classe mãe utilizarem o mesmo nome de método para
executar tarefas diferentes.

II. Na composição, quando uma instância é removida, suas partes também


deverão ser removidas. – correto. Na composição, a parte não existe sem o todo.

III. Na agregação, quando uma instância for removida, suas partes não
necessariamente deverão ser removidas. – correto. Na agregação, as partes
podem existir sem o todo.

Resposta certa, alternativa d).

CONSIDERAÇÕES FINAIS

Companheiros e companheiras,

Como vocês podem reparar, o estudo de TI é altamente heterogêneo.


Em programação, temos uma forma de aprender completamente diferente
de outros assuntos, e eu sei que o aprendizado dessa matéria é um dos
mais complicados para transmissão sem a presença física do professor.
Alguns assimilam de primeira com extrema facilidade; outros leem por
várias vezes antes de começar a entender alguma coisa. Mas, uma vez que
se entenda, você decola, e os exercícios começam a parecer triviais.

Existe um caminho de muito sacrifício e dedicação até a aprovação, e


você já está dando passos certos nessa direção.

Sucesso, e força nos estudos!

Victor Dalton

Prof. Victor Dalton


www.estrategiaconcursos.com.br 59 de 73
Tecnologia da Informação para ICMS/SP 2017
Agente Fiscal de Rendas Gestão Tributária
Prof Victor Dalton Aula 06
EXERCÍCIOS

1ª Questão) (FCC – TRE/SP – Técnico Judiciário - Programação de


Sistemas – 2012) Analise o algoritmo a seguir:

Se forem lidos os valores 2, 5, 7, 3 e 4,

a) a saída será 840.


b) haverá um erro, pois o resultado de um cálculo envolvendo a variável r
não pode ser armazenado na própria variável r.
c) a saída será 210.
d) haverá um erro, pois o valor gerado será maior do que uma variável do
tipo inteiro pode suportar.
e) a saída será 0.

Prof. Victor Dalton


www.estrategiaconcursos.com.br 60 de 73
Tecnologia da Informação para ICMS/SP 2017
Agente Fiscal de Rendas Gestão Tributária
Prof Victor Dalton Aula 06
2ª Questão) (UEL - CMTU – Analista Administrativo – Tecnologia da
Informação - 2011) Observe o trecho do algoritmo a seguir

atribuir 50 a I
atribuir 0 a TOTAL
atribuir 0 a K

enquanto K < I faca

tesinıcio
testessomar 10 a K;
testesatribuir TOTAL+K a TOTAL
testesimprimir(K);
tesfim;

fim-enquanto;

imprimir(TOTAL);

Ao final do processamento, a variável TOTAL e o número de vezes que a K


será impresso são, respectivamente:

a) 100 e 4

b) 150 e 5

c) 150 e 8

d) 150 e 9

e) 210 e 6

Prof. Victor Dalton


www.estrategiaconcursos.com.br 61 de 73
Tecnologia da Informação para ICMS/SP 2017
Agente Fiscal de Rendas Gestão Tributária
Prof Victor Dalton Aula 06
3ª Questão) (FCC – ARCE – Analista de Regulação - Analista de
Sistemas – 2012) Considere o algoritmo em pseudocódigo:

Os valores de R1, R2 e R3, após a execução do algoritmo são:

a) R1=0, R2=1, R3=1


b) R1=1, R2=1, R3=0
c) R1=1, R2=0, R3=0

Prof. Victor Dalton


www.estrategiaconcursos.com.br 62 de 73
Tecnologia da Informação para ICMS/SP 2017
Agente Fiscal de Rendas Gestão Tributária
Prof Victor Dalton Aula 06
d) R1=0, R2=0, R3=1
e) R1=0, R2=0, R3=0

4ª Questão)(FCC – TRF/4ª Região – Analista Judiciário – Informática


– 2010) Considere:

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


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

a) 6.
b) 22.
c) 86.
d) 0.
e) 342.

Prof. Victor Dalton


www.estrategiaconcursos.com.br 63 de 73
Tecnologia da Informação para ICMS/SP 2017
Agente Fiscal de Rendas Gestão Tributária
Prof Victor Dalton Aula 06
5ª Questão) (FCC – METRÔ/SP – Analista Desenvolvimento Gestão
Júnior – Ciências da Computação - 2012) Analise a estrutura abaixo.

Considere mod o operador que calcula o resto da divisão entre dois números
inteiros.
Por meio de um teste de mesa é possível constatar que o portugol mostrado
representa a resolução da equação:

a) resp = 0 + 1 – 2 + 3 – 4 + 5 – ... (+ ou –) n
b) resp = 0 + 1 – 22 + 34 – 46 + 5n
c) resp = 0 – 1 – 2 – 3 – 4 – 5 – ... – n
d) resp = 0 + 1! – 2! + 3! – 4! + 5! – n!
e) resp = 0 – 1 + 2 – 3 + 4 – 5 + ... – n

Prof. Victor Dalton


www.estrategiaconcursos.com.br 64 de 73
Tecnologia da Informação para ICMS/SP 2017
Agente Fiscal de Rendas Gestão Tributária
Prof Victor Dalton Aula 06
6ª Questão) (UEL - CELEPAR – Analista de Informática Júnior –
Desenvolvimento de Sistemas - 2009) O seguinte algoritmo implementa um
método de ordenação:

Assinale a alternativa que indica quantas vezes o trecho destacado do


algoritmo será executado, se o algoritmo for executado recebendo como
parâmetros {6, 5, 4, 3, 2, 1} e 6.

a) 0

b) 1

c) 3

d) 5

e) 6

(CESPE – SERPRO – Técnico – Programação - 2008) A respeito da lógica


de programação, que é fundamental para o desenvolvimento de códigos por meio
de linguagens de programação, julgue os itens subsequentes.

7 Um algoritmo pode ser definido como uma sequência finita de


passos que levam à execução de determinada tarefa ou conjunto de
tarefas.

Prof. Victor Dalton


www.estrategiaconcursos.com.br 65 de 73
Tecnologia da Informação para ICMS/SP 2017
Agente Fiscal de Rendas Gestão Tributária
Prof Victor Dalton Aula 06

8 Na lógica de programação, a instrução é o comando principal que


indica a um programa uma condição estrutural a repetir.

9 Um diagrama de blocos é uma forma padronizada para se


representar os passos lógicos de determinado processamento. Por meio
do diagrama, pode ser utilizada uma sequência de símbolos, com
significado bem definido, para auxiliar a representação dos passos de um
processamento.

10 Os operadores relacionais são utilizados para comparar números.


Para se comparar sequências de caracteres (strings), são utilizados os
operadores lógicos, que retornam valores verdadeiro e falso.

11 Em lógica de programação, uma constante é um valor fixo que não


se modifica ao longo do tempo durante a execução de um programa. Essa
constante pode ser numérica, lógica ou literal.

(CESPE – SERPRO – Analista – Suporte Técnico - 2013) Julgue os itens


seguintes, relativos a programação e lógica de programação.

12 Parâmetros são pontos de comunicação entre módulos de um


programa. A passagem de parâmetros, que consiste na substituição do
parâmetro formal pelo parâmetro real, pode ser realizada por valor ou por
referência.

13 Segundo o pseudocódigo abaixo, um vetor de 100 números é lido


e, em seguida, é montado um segundo vetor a partir dos valores do
primeiro vetor multiplicados por 3.

início

VET1,VET2 : vetor [1..100] numérico

CONTADOR : numérico

para CONTADOR de 1 até 100 faça

leia "Digite um número: ",VET1[CONTADOR]

Prof. Victor Dalton


www.estrategiaconcursos.com.br 66 de 73
Tecnologia da Informação para ICMS/SP 2017
Agente Fiscal de Rendas Gestão Tributária
Prof Victor Dalton Aula 06
VET2[CONTADOR] (VET1[CONTADOR] * 3)

fim-para

fim

(CESPE – STM – Analista Judiciário – Análise de Sistemas – 2011 -


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

14 Procedimento ou sub-rotina é um conjunto de instruções que


realiza determinada tarefa. A diferença de um procedimento para uma
função é que as funções podem ser utilizadas em expressões, como se
fossem variáveis, pois elas retornam valores associados ao seu nome.

15 Na passagem de parâmetros por referência, o valor do parâmetro


real é copiado para o parâmetro formal do módulo, preservando, assim, o
valor original do parâmetro. Na passagem de parâmetros por valor, toda
alteração feita nos parâmetros formais reflete-se nos parâmetros reais.

16 Nas estruturas de controle, tais como as estruturas de seleção


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

(CESPE – Banco da Amazônia – Técnico Científico – Análise de


Sistemas - 2012)

17 O comando while utilizado em algoritmos implementa laços com


teste antecipado de condições, testando a condição e, sendo ela
verdadeira, executando o bloco de comandos.

18 Quando um break é encontrado dentro de um laço for, a execução


do código é interrompida e o programa é finalizado.

(CESPE – UNIPAMPA – Analista de Tecnologia da Informação – Rede


e Suporte - 2009) Em relação aos conceitos de lógica de programação utilizados
para a construção de algoritmos, julgue os próximos itens.

Prof. Victor Dalton


www.estrategiaconcursos.com.br 67 de 73
Tecnologia da Informação para ICMS/SP 2017
Agente Fiscal de Rendas Gestão Tributária
Prof Victor Dalton Aula 06
19 Valores que sejam armazenados em variáveis locais de
determinado procedimento ou função não podem ser utilizados em outros
procedimentos ou funções.

Algoritmo REFERENCIA
VAR TESTE:inteiro
INICIO
TESTE 30;
MANIPULA_VARIAVEL(TESTE);
ESCREVA(TESTE);
FIM

Algoritmo MANIPULA_VARIAVEL(X:inteiro)
INICIO
X X + 10;
ESCREVA(X);
FIM

20 Estruturas de repetição permitem que uma sequência de


comandos seja executada repetidamente até que determinada condição
de interrupção seja satisfeita. É possível que, em determinada execução
do algoritmo, a sequência de comandos não seja executada nenhuma vez.

21 Registros são estruturas consideradas heterogêneas porque são


compostos de dados que, apesar de serem logicamente relacionados, não
têm necessariamente o mesmo tipo.

(CESPE – Banco da Amazônia – Técnico Científico – Redes e


Telecomunicações - 2010) Julgue os itens seguintes, relativos à lógica de
programação e construção de algoritmos.

22 Na definição de uma função, a passagem de parâmetros por


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

Prof. Victor Dalton


www.estrategiaconcursos.com.br 68 de 73
Tecnologia da Informação para ICMS/SP 2017
Agente Fiscal de Rendas Gestão Tributária
Prof Victor Dalton Aula 06
23 É possível implementar procedimentos cujos valores gerados
podem ser armazenados em variáveis que garantem sua existência
mesmo após o término da execução de tais procedimentos.

24 Estruturas de repetição são usadas para que determinado bloco


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

25 Variáveis declaradas dentro de funções ou procedimentos são


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

26ª Questão) (FCC – TCE/PR – Analista de Controle –Informática –


2011) Em relação à Programação Orientada a Objetos, é INCORRETO afirmar:

a) Polimorfismo pode ser entendido como um conceito complementar ao de


herança. Assim, no polimorfismo é possível enviar a mesma mensagem a
diferentes objetos e cada objeto responder da maneira mais apropriada para sua
classe.
b) Uma agregação representa um todo que é composto de várias partes e
constitui um relacionamento de contenção; se qualquer uma das partes for
destruída, as demais partes também o serão.
c) Interfaces são como as classes abstratas, mas nelas não é possível
implementar nenhum método, apenas declarar suas assinaturas; uma classe ao
implementar uma interface deverá escrever todos os seus métodos.
d) No contexto da herança, uma instância da subclasse é, também, uma
instância da superclasse.
e) A aplicação do polimorfismo utilizando interfaces requer que o método
polimórfico seja definido na classe ancestral como abstract para possibilitar sua
redefinição nas classes descendentes.

27ª Questão) (FCC – INFRAERO – Analista Superior III –Analista de


Sistemas - Desenvolvimento e Manutenção – 2011) Sobre orientação a
objetos, é correto afirmar:

Prof. Victor Dalton


www.estrategiaconcursos.com.br 69 de 73
Tecnologia da Informação para ICMS/SP 2017
Agente Fiscal de Rendas Gestão Tributária
Prof Victor Dalton Aula 06
a) Uma classe é o projeto do objeto. Ela informa à máquina virtual como criar
um objeto de um tipo específico. Cada objeto criado a partir da classe terá os
mesmos valores para as variáveis de instância da classe.
b) Um relacionamento de herança significa que a superclasse herdará as
variáveis de instância e métodos da subclasse.
c) Uma interface é uma classe 100% abstrata, ou seja, uma classe que não
pode ser instanciada.
d) Os objetos têm seu estado definido pelos métodos e seu comportamento
definido nas variáveis de instância.
e) A principal regra prática do encapsulamento é marcar as variáveis de
instância como públicas e fornecer métodos de captura e configuração privados.

28ª Questão) (ESAF – Analista de Finanças e Controle –


Desenvolvimento de Sistemas de Informação – 2008) A programação
orientada a objetos é baseada em diversos conceitos, tais como encapsulamento,
herança, polimorfismo e abstração. Com relação a esses conceitos, é correto
afirmar que
a) o conceito de encapsulamento é alcançado por meio da definição da
visibilidade pública aos atributos e métodos.
b) herança é um mecanismo que permite que uma classe herde todo o
comportamento e os atributos de outra classe. Em Java, pode-se implementar
tanto a herança única quanto a herança múltipla.
c) interface pode ser considerada como a forma com que um objeto se
apresenta para outros, no que diz respeito aos seus atributos e métodos. Em Java,
uma mesma classe não pode implementar mais de uma interface.
d) polimorfismo é o uso de um mesmo nome para identificar diferentes
implementações dos métodos. Seu uso é comum na definição de construtores, em
que os mesmos podem ser implementados em diferentes versões para as
diferentes formas de se instanciar a classe.
e) para uma classe ser considerada abstrata, todos os seus métodos devem
ser abstratos. Em Java, para se definir uma classe abstrata deve-se utilizar a
palavra chave “abstract” no início de sua declaração.

29ª Questão) (FCC – INFRAERO – Analista Superior III –Analista de


Sistemas - Desenvolvimento e Manutenção – 2011) Em Sistemas Orientados
a Objeto (OOP), a utilização de polimorfismo contribui para a extensão das
funcionalidades do sistema, pois

a) favorece a reutilização de código devido ao encapsulamento de suas


operações e atributos.
b) permite que uma classe possa herdar operações e atributos de outra
classe, introduzindo suas próprias operações e atributos.

Prof. Victor Dalton


www.estrategiaconcursos.com.br 70 de 73
Tecnologia da Informação para ICMS/SP 2017
Agente Fiscal de Rendas Gestão Tributária
Prof Victor Dalton Aula 06
c) a abstração na geração de novas classes permite que novos atributos
herdem as características da superclasse.
d) possibilita a utilização de uma mesma operação para tarefas diferentes,
determinadas por sua assinatura ou sobrecarga da operação original.
e) permite que a mesma mensagem seja enviada a objetos de classes
distintas, favorecendo a reutilização de código.

30ª Questão) (UEL – Agência de Fomento do Paraná – Analista de


Tecnologia da Informação – 2010) Analise os métodos da classe a seguir:

class c{
void m(int i);
void m(float i);
void m(double i);
}

Esses métodos constituem um exemplo de

a) polimorfismo
b)herança múltipla
c)métodos virtuais
d)métodos privados
e)sobrecarga de métodos

31ª Questão) (ESAF – Analista de Finanças e Controle –


Desenvolvimento de Sistemas de Informação – 2012 - adaptada)
Acoplamento é uma medida

a) da extensão do procedimento.
b) do quanto uma classe depende ou está relacionada à outra.
c) da intensidade das ligações entre procedimentos.
d) das relações entre atributos.
e) das ligações redundantes entre formas de processamento.

32ª Questão) (ESAF – Analista de Finanças e Controle –


Desenvolvimento de Sistemas de Informação – 2008) Com relação aos
conceitos de programação orientada a objetos, é correto afirmar que

a) métodos abstratos são aqueles que não devem ser redefinidos em classes
derivadas, devem ser herdados tal como foram definidos.
b) métodos estáticos são aqueles que, ao serem executados, não acessam
atributos de instância da classe.

Prof. Victor Dalton


www.estrategiaconcursos.com.br 71 de 73
Tecnologia da Informação para ICMS/SP 2017
Agente Fiscal de Rendas Gestão Tributária
Prof Victor Dalton Aula 06
c) métodos finais, também conhecidos como finalizadores ou destrutores,
são chamados na destruição de uma instância.
d) métodos construtores são métodos chamados sobre um objeto quando ele
é criado. Em Java, os construtores têm o mesmo nome da classe da qual são
membros e o tipo retornado por eles é especificado na sua definição.
e) métodos de classe são aqueles que executam operações que afetam
objetos individuais da classe.

33ª Questão) (FCC – Agente Fiscal de Rendas – Tecnologia da


Informação - 2009) Os valores das propriedades de um objeto em um
determinado instante, que podem mudar ao longo do tempo, representam

a) a instância de uma classe.


b) a identidade de um objeto.
c) o estado de um objeto.
d) o comportamento de um objeto.
e) as operações de uma classe.

34ª Questão) (CETRO – SEMSA – Especialista em Saúde – Analista de


Sistemas - 2012) Quanto à orientação a objetos, analise as assertivas abaixo.

I. O polimorfismo permite que uma mesma classe possa ser utilizada em


diferentes contextos.

II. Na composição, quando uma instância é removida, suas partes também


deverão ser removidas.

III. Na agregação, quando uma instância for removida, suas partes não
necessariamente deverão ser removidas.

É correto o que se afirma em

(A) I e III, apenas.

(B) I e II, apenas.

(C) II e III, apenas.

(D) I, II e III.

(E) II, apenas.

Prof. Victor Dalton


www.estrategiaconcursos.com.br 72 de 73
Tecnologia da Informação para ICMS/SP 2017
Agente Fiscal de Rendas Gestão Tributária
Prof Victor Dalton Aula 06

GABARITO

1.a 2.b 3.c 4.b 5.a 6.c 7.c 8.e 9.c 10.e
11.c 12.c 13.e 14.c 15.e 16.c 17.c 18.e 19.e 20.c
21.c 22.c 23.c 24.c 25.e 26.b 27.c 28.d 29.d 30.e
31.b 32.b 33.c 34.d

Prof. Victor Dalton


www.estrategiaconcursos.com.br 73 de 73

Você também pode gostar