Baixe o app para aproveitar ainda mais
Prévia do material em texto
Prof. Victor Dalton Aula 08 1 de 69| www.direcaoconcursos.com.br Informática para Agente e Escrivão da Polícia Federal - 2020 Aula 08 Informática para Agente e Escrivão da Polícia Federal - 2020 Prof. Victor Dalton 2020 Prof. Victor Dalton Aula 08 2 de 69| www.direcaoconcursos.com.br Informática para Agente e Escrivão da Polícia Federal - 2020 Sumário SUMÁRIO ............................................................................................................................................................ 2 CONCEITOS BÁSICOS ........................................................................................................................................... 3 LÓGICA DE PROGRAMAÇÃO ................................................................................................................................................... 3 FORMAS DE REPRESENTAÇÃO DE UM ALGORITMO ..................................................................................................................... 4 ELEMENTOS DE UM ALGORITMO ............................................................................................................................................. 6 TIPOS DE VARIÁVEIS ............................................................................................................................................................. 8 Vetores, matrizes e registros ......................................................................................................................................... 8 ATRIBUIÇÃO ..................................................................................................................................................................... 10 TESTE DE MESA ................................................................................................................................................................. 10 OPERADORES ARITMÉTICOS, RELACIONAIS E LÓGICOS ............................................................................................................ 10 INSTRUÇÕES “LER” E “ESCREVER” ........................................................................................................................................ 12 PROCEDIMENTOS E FUNÇÕES .............................................................................................................................................. 12 VARIÁVEIS LOCAIS E VARIÁVEIS GLOBAIS ................................................................................................................................ 13 PASSAGEM DE PARÂMETROS POR VALOR E POR REFERÊNCIA ..................................................................................................... 14 ESTRUTURAS DE CONTROLE .............................................................................................................................. 16 ESTRUTURA SEQUENCIAL ................................................................................................................................................... 16 ESTRUTURAS DE SELEÇÃO .................................................................................................................................................. 16 Estrutura de seleção simples (ou estrutura de desvio, ou estrutura condicional, ou estrutura if-then) .............................. 16 Estrutura de seleção composta (ou estrutura de desvio, ou estrutura condicional, ou estrutura if-then-else) ................... 17 Estrutura de seleção aninhada .................................................................................................................................... 17 Estrutura de seleção múltipla ..................................................................................................................................... 18 ESTRUTURAS DE REPETIÇÃO ................................................................................................................................................ 18 Estruturas de repetição com verificação antecipada ..................................................................................................... 18 Estruturas de repetição com verificação no final .......................................................................................................... 21 Estruturas de repetição com variável de controle ......................................................................................................... 21 Comando break .......................................................................................................................................................... 22 QUESTÕES COMENTADAS PELO PROFESSOR ..................................................................................................... 23 CONSIDERAÇÕES FINAIS .................................................................................................................................... 55 LISTA DE QUESTÕES .......................................................................................................................................... 55 GABARITO ......................................................................................................................................................... 68 RESUMO DIRECIONADO .................................................................................................................................... 68 Olá amigos e amigas! Vamos quebrar a rotina? Nosso assunto de hoje é Lógica de Programação. Introdução FUNDAMENTAL para que você possa estudar Python e R. Estamos juntos? Prof. Victor Dalton Aula 08 3 de 69| www.direcaoconcursos.com.br Informática para Agente e Escrivão da Polícia Federal - 2020 Conceitos Básicos 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 Direção, você precisa: 1.Ligar o computador; 2.Abrir o navegador de Internet; 3.Acessar o site do Direção Concursos; 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. 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. Prof. Victor Dalton Aula 08 4 de 69| www.direcaoconcursos.com.br Informática para Agente e Escrivão da Polícia Federal - 2020 Figura 1. 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 linguagem de programação propriamente dita, como C, C#, Pascal, Java, etc... ele passa a se chamar Programa. Mas continuemos a estudar o algoritmo! 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 Direção. 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: Prof. Victor Dalton Aula 08 5 de 69| www.direcaoconcursos.com.br Informática para Agente e Escrivão da Polícia Federal - 2020 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 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: Prof. Victor Dalton Aula 08 6 de 69| www.direcaoconcursos.com.br Informática para Agente e Escrivão da Polícia Federal - 2020 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. Elementos de um algoritmo 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) Digite numero n1 Digite numero n2 n1 & n2 = 0? Inicio Some n1 e n2 e divida por 2 Imprima o resultado Fim SIM NÃO Prof. Victor Dalton Aula 08 7 de 69| www.direcaoconcursos.com.br Informática para Agente e Escrivão da Polícia Federal - 2020 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 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; Prof. Victor Dalton Aula 08 8 de 69| www.direcaoconcursos.com.br Informática para Agente e Escrivão da Polícia Federal - 2020 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! Tipos de variáveis 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. 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: A 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 Matrizes, por sua vez, são estruturas bidimensionais, podendo conter múltiplas linhas e colunas. 1,33 Prof. Victor Dalton Aula 08 9 de 69| www.direcaoconcursos.com.br Informática para Agente e Escrivão da Polícia Federal - 2020 Descreve-se uma matriz por meio do formato 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: B 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 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: Registro PESSOA Nome: caractere[35] Endereco: caractere[100] Idade: inteiro Em programação orientada a objetos, são objetos, propriamente ditos. 10 Prof. Victor Dalton Aula 08 10 de 69| www.direcaoconcursos.com.br Informática para Agente e Escrivão da Polícia Federal - 2020 Atribuição Em lógica de programação, temos que prestar atenção à manipulação das variáveis. Representadaspor 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”) Em lógica de programação, a igualdade é utilizada para fins de comparação. Isso será visto adiante. 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. 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ª Prof. Victor Dalton Aula 08 11 de 69| www.direcaoconcursos.com.br Informática para Agente e Escrivão da Polícia Federal - 2020 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 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 X e Y X ou Y não X X xou Y Prof. Victor Dalton Aula 08 12 de 69| www.direcaoconcursos.com.br Informática para Agente e Escrivão da Polícia Federal - 2020 V V V V F F V F F V F V F V F V V V F F F F V F 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 continuar. Por fim, o comando “Escrever” imprime, na tela do computador, o dado. Portanto, o comando ESCREVER (NOME, MEDIA) imprime, lado a lado, o conteúdo das variáveis NOME e MEDIA, na tela do computador. 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)? Prof. Victor Dalton Aula 08 13 de 69| www.direcaoconcursos.com.br Informática para Agente e Escrivão da Polícia Federal - 2020 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 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. 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 VAR Z:inteiro //variável local INICIO Z← parametro3 +parametro4; Prof. Victor Dalton Aula 08 14 de 69| www.direcaoconcursos.com.br Informática para Agente e Escrivão da Polícia Federal - 2020 D← D + Z // variável global sendo manipulada FIM// variável local extinta, variável global modificada, e continua existindo 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 conjuntode 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? 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? Prof. Victor Dalton Aula 08 15 de 69| www.direcaoconcursos.com.br Informática para Agente e Escrivão da Polícia Federal - 2020 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); 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. Prof. Victor Dalton Aula 08 16 de 69| www.direcaoconcursos.com.br Informática para Agente e Escrivão da Polícia Federal - 2020 Estruturas de controle Entendidos os fundamentos básicos acerca dos algoritmos, podemos avançar o nosso estudo para algoritmos mais complexos. 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; 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. 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. 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: ALGORITMO NUMEROS_IGUAIS; Prof. Victor Dalton Aula 08 17 de 69| www.direcaoconcursos.com.br Informática para Agente e Escrivão da Polícia Federal - 2020 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. Estrutura de seleção composta (ou estrutura de desvio, ou estrutura condicional, ou estrutura if-then- else) emos 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). 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) Prof. Victor Dalton Aula 08 18 de 69| www.direcaoconcursos.com.br Informática para Agente e Escrivão da Polícia Federal - 2020 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)! 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 quefazer 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) 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 Ten 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. 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. Estruturas de repetição com verificação antecipada Vamos direto a um exemplo, já que é assim que se aprende? Prof. Victor Dalton Aula 08 19 de 69| www.direcaoconcursos.com.br Informática para Agente e Escrivão da Polícia Federal - 2020 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. 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 Aula 08 20 de 69| www.direcaoconcursos.com.br Informática para Agente e Escrivão da Polícia Federal - 2020 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 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. Prof. Victor Dalton Aula 08 21 de 69| www.direcaoconcursos.com.br Informática para Agente e Escrivão da Polícia Federal - 2020 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. 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! 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. Prof. Victor Dalton Aula 08 22 de 69| www.direcaoconcursos.com.br Informática para Agente e Escrivão da Polícia Federal - 2020 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? Comando break 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. 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 Aula 08 23 de 69| www.direcaoconcursos.com.br Informática para Agente e Escrivão da Polícia Federal - 2020 Questões comentadas pelo professor 1. (VUNESP – Pref. De Itapevi – 2019) Analise o seguinte algoritmo, apresentado na forma de pseudo-código (português estruturado). Caso os valores lidos para as variáveis a, b, c e d tenham sido, respectivamente, 4, 2, 6 e 2, ao final da execução desse algoritmo o valor presente na variável x será: a) 5 b) 7 c) 8 d) 9 e) 10 Comentários: Vamos iniciar nosso teste de mesa? a -> 4 b -> 2 c -> 6 d -> 2 i -> 1 x -> 0 Neste primeiro momento, a iteração irá comparar se (a+b) > (c+d). 6 > 8 ? FALSO. Logo, vamos para o SENÃO. x recebe X+2, de zero vai a 2; a recebe a+2, de 4 vai a 6; Prof. Victor Dalton Aula 08 24 de 69| www.direcaoconcursos.com.br Informática para Agente e Escrivão da Polícia Federal- 2020 c recebe c+1, de 6 vai a 7. i irá de 1 a 2, para repetir a iteração. Logo, nossas variáveis atualizadas são: a -> 6 b -> 2 c -> 7 d -> 2 i -> 2 x -> 2 Na segunda iteração, compararemos se (a+b) > (c+d). 8 > 9 ? FALSO. Logo, vamos para o SENÃO. x recebe X+2, de 2 vai a 4; a recebe a+2, de 6 vai a 8; c recebe c+1, de 7 vai a 8. i irá de 2 a 3, para repetir a iteração. Logo, nossas variáveis atualizadas são: a -> 8 b -> 2 c -> 8 d -> 2 i -> 3 x -> 4 Na terceira iteração, compararemos se (a+b) > (c+d). 10 > 10 ? FALSO. Logo, vamos para o SENÃO. x recebe X+2, de 4 vai a 6; a recebe a+2, de 8 vai a 10; c recebe c+1, de 8 vai a 9. i irá de 3 a 4, para repetir a iteração. Logo, nossas variáveis atualizadas são: a -> 10 b -> 2 c -> 9 d -> 2 i -> 4 x -> 6 Na quarta iteração, compararemos se (a+b) > (c+d). 12 > 11 ? VERDADEIRO. Logo, vamos para o ENTÃO. x recebe X+1, de 6 vai a 7; Prof. Victor Dalton Aula 08 25 de 69| www.direcaoconcursos.com.br Informática para Agente e Escrivão da Polícia Federal - 2020 a recebe a+2, de 10 vai a 12; c recebe c+1, de 9 vai a 10. i irá de 4 a 5, para repetir a iteração. Logo, nossas variáveis atualizadas são: a -> 12 b -> 2 c -> 10 d -> 2 i -> 5 x -> 7 Na quinta e última iteração, compararemos se (a+b) > (c+d). 14 > 12 ? VERDADEIRO. Logo, vamos para o ENTÃO. x recebe X+1, de 7 vai a 8; a recebe a+2, de 12 vai a 14; c recebe c+1, de 10 vai a 11. i irá de 5 a 6, e a repetição chega ao fim. Nossas variáveis atualizadas são: a -> 14 b -> 2 c -> 11 d -> 2 i -> 6 x -> 8 Imprima X irá imprimir 8. Resposta certa, alternativa c). 2. (IF Sul Rio-Grandense – IF Sul Rio-Grandense – 2019) Observe o seguinte pseudo-código: X[1] <- 10 X[2] <- X[1] + 20 * 2 X[3] <- 100 Y <- X[2] SE X[1] = 10 ENTAO X[1] <- X[3] + X[1] + 50 Z <- Y + X[1] + x[2] Prof. Victor Dalton Aula 08 26 de 69| www.direcaoconcursos.com.br Informática para Agente e Escrivão da Polícia Federal - 2020 Ao final da execução do código acima, qual é o valor da variável Z? a) 260 b) 220 c) 230 d) 200 Comentários: Este é um pseudocódigo relativamente elementar. Vejamos: X[1] recebe o valor 10; X[2] recebe o valor de X[1] acrescido de 20*2. Logo, X[2] recebe 50; X[3] recebe 100; Y recebe o valor de X[2], ou seja, 50; X[1] é igual a 10? SIM. Logo executaremos o ENTÃO. X[1] recebe os valores X[3] + X[1] + 50. X[1] recebe 100+10+50, logo, recebe 160; Z recebe Y + X[1] + X[2], ou seja, 50 + 160 + 50, o que dará 260. Resposta certa, alternativa a). 3. (FUNDEP – Pref. De Itatiaiuçu – 2018) Considere o trecho de um algoritmo em pseudocódigo que mostra comandos condicionais “se” aninhados com início e fim delimitados por { }: Analisando esse trecho, é correto afirmar que a) se T1 e T2 forem verdadeiros e T3 falso, o Comando1, o Comando2 e o Comando4 serão executados. b) o Comando7 será executado independentemente de qualquer valor dos testes. c) se T1 e T4 forem verdadeiros e T5 falso, o Comando5 e o Comando7 serão executados. d) se T1, T2 e T3 forem verdadeiros, o Comando1, o Comando2 e o Comando7 serão executados. Comentários: Analisando os itens: Prof. Victor Dalton Aula 08 27 de 69| www.direcaoconcursos.com.br Informática para Agente e Escrivão da Polícia Federal - 2020 a) Se T1 for verdadeiro, realmente o Comando1 será executado; Porém, sendo T2 verdadeiro e T3 falso, o segundo SE também será verdadeiro, e teremos Comando2 e Comando3 sendo executados. Item errado, pois insinua que Comando4 será executado; b) o Comando7 está dentro do primeiro SE, cujo parâmetro de avaliação é T1. Logo, caso T1 seja verdadeiro, é certo que Comando7 será executado, porém, se T1 for falso, Comando7 não será executado. Item errado; c) veja que se T4 for verdadeiro e T5 falso, o Comando5 terá que ser pulado, pois (T4 E T5) é falso. Item errado; d) Só de T1 ser verdadeiro, sabemos que Comando1 e Comando7 serão executados; E ou T2 ou T3 sendo verdadeiros, Comando2 e Comando3 são executados. Item correto! Resposta certa, alternativa d). 4. (CEPS-UFPA – UNIFESSPA – 2018) Considere o seguinte pseudo-código: Para uma entrada a=5 e b=6, o resultado em tela depois da execução desse algoritmo, é a) 31. b) 60. c) 48. d) 66. e) 45. Comentários: Vamos acompanhar o código? Valores iniciais de a, b e c: a <- 5 b <-6 c <-0. i começa com 0 e deverá ir até 3, que é b/2. c = c + 3*a +i c = 0 + 3*5 + 0 Prof. Victor Dalton Aula 08 28 de 69| www.direcaoconcursos.com.br Informática para Agente e Escrivão da Polícia Federal - 2020 c = 15; Com i = 1; c = c + 3*a +i c = 15 + 3*5 + 1 c = 31; Com i = 2; c = c + 3*a +i c = 31 + 3*5 + 2 c = 48; Com i = 3; c = c + 3*a +i c = 48 + 3*5 + 3 c = 66; Logo, o valor final de c é 66. Resposta certa, alternativa d). 5. (CESPE – ABIN – 2018) Julgue o item seguinte a respeito da construção de algoritmos, dos conceitos de variáveis e de bloco de comandos e das estruturas de controle. Uma das vantagens de se construir um algoritmo por meio do pseudocódigo é o fato de que a passagem do algoritmo para uma linguagem de programação qualquer se torna uma atividade quase que instantânea. Comentários: O objetivo do pseudocódigo é escrever código em uma linguagem genérica, que facilmente pode ser adaptada a qualquer linguagem de programação. Resposta certa, item correto. 6. (CESPE – ABIN – 2018) Julgue o item subsequente, relativo à lógica de programação. O pseudocódigo a seguir, após executado, apresentará como resultado 13. funcao X (n) { se (n == 1 ou n == 2) então retorne n; senão Prof. Victor Dalton Aula 08 29 de 69| www.direcaoconcursos.com.br Informática para Agente e Escrivão da Polícia Federal - 2020 retorne X (n-1) + n * X (n-2); } escreva X(4); Comentários: A função X é uma função relativamente simples. Se o parâmetro passado for 1 ou 2, ela retorna o próprio parâmetro; caso contrário, o seu retorno é a própria função diminuída de 1 acrescida de n multiplicado pela própria função diminuída de 2. É a famosa RECURSIVIDADE, na qual a função chama a si mesma! Vamos lá: X(4), portanto, tem como resultado X(3) + 4*X(2). E agora? Vamos fazer uma parte de cada vez! X(3) X(3) é igual a X(2) + 3*X(1). X(2) e X(1) são conhecidos! X(2) é igual a 2 e X(1) é igual a 1. Logo, X(3) é tem como resultado 2 + 3*1 , que é igual a 5. X(4), portanto, tem como resultado 5 + 4*X(2). E, como X(2) é igual a 2, X(4) tem como resultado 5 + 4*2, que é igual a 13. Resposta certa, item correto. 7. (FADESP – COSANPA – 2017) Considere o código-fonte abaixo, desenvolvido na linguagem de programação “Portugol”: O número visualizado ao final da execução deste código-fonte é a) 1. b) 2. Prof. Victor Dalton Aula 08 30 de 69| www.direcaoconcursos.com.br Informática para Agente e Escrivão da Polícia Federal - 2020 c) 3. d) 4. Comentários: Basicamente, o código faz comparações e irá atribuir a RESULTADO um valor, dependendo do caminho seguido. Vamos então enxergar o que acontece? SE (X < Y+ K) e (K*2 > 4) e (Z+K <12) -> (2<13) e (6>4) e (12 < 12). O critério em negrito é FALSO, e, portanto, precisaremos analisar o SENÃO: (Y + 10 < Z) ou (Z > 12) -> (14<9) ou (9>12). Veja que ambos os critérios são FALSOS. Logo, iremos para o próximo SENÃO: SE (X + 2) >= (Y - 4) -> 4 >= 0 . VERDADEIRO! Assim sendo, RESULTADO recebe o valor 3 e este será o valor impresso. Resposta certa, alternativa c). 8. (QUADRIX – CFO-DF – 2017) Julgue o item que se segue acerca de desenvolvimento e manutenção de sistemas e aplicações. O portugol é uma das formas de se representar um algoritmo. Comentários: O Portugol, ou pseudocódigo, é a forma mais comum de de representar um algoritmo. Nela, escreve-se um código"genérico", que é fácil de ser adaptado a qualquer linguagem de programação. Resposta certa, item correto. 9. (IBFC – TRE-AM – 2014) Ao analisarmos o algoritmo genérico abaixo, em Portugol, chega-se a conclusão que a variável Z, ao final do algoritmo, terá o valor de: a) 4 Prof. Victor Dalton Aula 08 31 de 69| www.direcaoconcursos.com.br Informática para Agente e Escrivão da Polícia Federal - 2020 b) 5 c) 1 d) 8 Comentários: Vamos lá: inicialmente, verifica-se se Z é menor do que Y, o que é falso, já que Z é 6 e Y é 4. Devemos ir para o SENÃO. Z receberá o valor de Z + Y/X. Z <- 6 + 4/2 Z <- 6+2 Z <- 8. Resposta certa, alternativa d). 10. (CESPE – EBC – 2011) Acerca de pseudocódigo, descrição narrativa e fluxograma, que são usados para a descrição de algoritmos, julgue os próximos itens. A descrição narrativa é uma forma de algoritmo que utiliza linguagem estruturada e, embora sua estrutura e simbologia apresentem pequenas diferenças em relação à língua portuguesa, também é chamada de português estruturado. Comentários: A descrição narrativa é próxima da linguagem falada, e não utiliza nenhuma linguagem estruturada. É uma narração por escrito. Resposta certa, Item errado. 11. (CESPE – EBC – 2011) Acerca de pseudocódigo, descrição narrativa e fluxograma, que são usados para a descrição de algoritmos, julgue os próximos itens. Uma forma universal de representação de um algoritmo, o fluxograma, ou diagrama de blocos, utiliza figuras geométricas a fim de ilustrar os passos a serem seguidos para a resolução de um problema. Comentários: É a exata definição de fluxograma. Resposta certa, Item correto. 12. (CESPE – EBC – 2011) Prof. Victor Dalton Aula 08 32 de 69| www.direcaoconcursos.com.br Informática para Agente e Escrivão da Polícia Federal - 2020 Acerca de pseudocódigo, descrição narrativa e fluxograma, que são usados para a descrição de algoritmos, julgue os próximos itens. Para especificar os passos de um algoritmo, o pseudocódigo utiliza uma linguagem natural com característica pouco formal, o que pode causar ambiguidade e propiciar interpretações errôneas. Comentários: O pseudocódigo, embora não seja nenhuma linguagem de programação específica, já possui formalismos em seu algoritmo a ponto de não deixar dúvidas e nem ambiguidades. Afinal, precisa possuir todas as características de um bom algoritmo, inclusas a finitude e a clareza. Resposta certa, Item errado. 13. (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. Comentários: 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! n r cont Prof. Victor Dalton Aula 08 33 de 69| www.direcaoconcursos.com.br Informática para Agente e Escrivão da Polícia Federal - 2020 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. Prof. Victor Dalton Aula 08 34 de 69| www.direcaoconcursos.com.br Informática para Agente e Escrivão da Polícia Federal - 2020 n r cont 2 1 1 7 2 2 14 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). 14. (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; Prof. Victor Dalton Aula 08 35 de 69| www.direcaoconcursos.com.br Informática para Agente e Escrivão da Polícia Federal - 2020 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 Comentários: 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: Prof. Victor Dalton Aula 08 36 de 69| www.direcaoconcursos.com.br Informática para Agente e Escrivão da Polícia Federal - 2020 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. 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). 15. (FCC – ARCE – Analista de Regulação - Analista de Sistemas – 2012) Considere o algoritmo em pseudocódigo: Prof. Victor Dalton Aula 08 37 de 69| www.direcaoconcursos.com.br Informática para Agente e Escrivão da Polícia Federal - 2020Os 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 Comentários: 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)) Prof. Victor Dalton Aula 08 38 de 69| www.direcaoconcursos.com.br Informática para Agente e Escrivão da Polícia Federal - 2020 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. 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. Prof. Victor Dalton Aula 08 39 de 69| www.direcaoconcursos.com.br Informática para Agente e Escrivão da Polícia Federal - 2020 Resposta certa, alternativa c). 16. (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. Comentários: 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: N 4 X 2 CONTA CONTB EXP Prof. Victor Dalton Aula 08 40 de 69| www.direcaoconcursos.com.br Informática para Agente e Escrivão da Polícia Federal - 2020 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 Aula 08 41 de 69| www.direcaoconcursos.com.br Informática para Agente e Escrivão da Polícia Federal - 2020 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 Prof. Victor Dalton Aula 08 42 de 69| www.direcaoconcursos.com.br Informática para Agente e Escrivão da Polícia Federal - 2020 X 2 2 CONTA 2 4 6 CONTB 1 2 1 1 2 3 4 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). 17. (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 Comentários: 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 comas variáveis do código: Prof. Victor Dalton Aula 08 43 de 69| www.direcaoconcursos.com.br Informática para Agente e Escrivão da Polícia Federal - 2020 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: 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. Prof. Victor Dalton Aula 08 44 de 69| www.direcaoconcursos.com.br Informática para Agente e Escrivão da Polícia Federal - 2020 Assim sendo, percebemos que resp representa a solução da equação 0 + 1 - 2 + 3 - 4 + 5 ... (+ ou -) n. Alternativa a). 18. (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 Comentários: 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: Prof. Victor Dalton Aula 08 45 de 69| www.direcaoconcursos.com.br Informática para Agente e Escrivão da Polícia Federal - 2020 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: 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} Prof. Victor Dalton Aula 08 46 de 69| www.direcaoconcursos.com.br Informática para Agente e Escrivão da Polícia Federal - 2020 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”. 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. 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. Por fim, a resposta correta é a alternativa c). (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. 19. Um algoritmo pode ser definido como uma sequência finita de passos que levam à execução de determinada tarefa ou conjunto de tarefas. Comentários: Definição clássica de algoritmo. Correto. 20. Prof. Victor Dalton Aula 08 47 de 69| www.direcaoconcursos.com.br Informática para Agente e Escrivão da Polícia Federal - 2020 Na lógica de programação, a instrução é o comando principal que indica a um programa uma condição estrutural a repetir. Comentários: 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. Errada. 21. 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 significadobem definido, para auxiliar a representação dos passos de um processamento. Comentários: Os diagramas são ferramentas úteis para representar visualmente a execução de um algoritmo. Correta. 22. 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. Comentários: É 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. Errada. 23. 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. Comentários: A constante não pode ser modificada, apenas a variável. Correta. 24. 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 Aula 08 48 de 69| www.direcaoconcursos.com.br Informática para Agente e Escrivão da Polícia Federal - 2020 para CONTADOR de 1 até 100 faça leia "Digite um número: ",VET1[CONTADOR] VET2[CONTADOR] ← (VET1[CONTADOR] * 3) fim-para fim Comentários: 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! Errada. 25. 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. Comentários: A verificação das condições ocorre no comando if. Correta. (CESPE – Banco da Amazônia – Técnico Científico – Análise de Sistemas - 2012) 26. 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. Comentários: Já o repeat until verifica a condição depois da execução da estrutura. Correta. 27. Quando um break é encontrado dentro de um laço for, a execução do código é interrompida e o programa é finalizado. Comentários: 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. Errada. 28. Prof. Victor Dalton Aula 08 49 de 69| www.direcaoconcursos.com.br Informática para Agente e Escrivão da Polícia Federal - 2020 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. Comentários: 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. Correta. 29. 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. Comentários: Quando se utiliza o repeat until, o bloco de comandos será executado pelo menos uma vez. Correta. 30. (FCC – TRT/20 – Técnico Judiciário – Área Administrativa – 2016) Uma das funções da lógica de programação é definir os passos para se resolver problemas do mundo real através de programas de computador criados nas linguagens de programação. Considere, nesse contexto, a estrutura de passos em pseudolinguagem abaixo. Se for informado o valor 4000 para a variável salary será exibido o valor (A) 4400 (B) 4300 (C) 5000 (D) 4200 Prof. Victor Dalton Aula 08 50 de 69| www.direcaoconcursos.com.br Informática para Agente e Escrivão da Polícia Federal - 2020 (E) 9000 Comentários: Na lógica se-então-senão, o fato de salary ser igual a 4000 levará o código a pular até a linha 12, para o último senão, que acrescentará 1000 à variável salary, fazendo-a receber o valor 5000, que será exibido ao final do programa. Resposta certa, alternativa c). 31. (FGV – COMPESA – Administrador de Banco de Dados – 2016) Considere a série a seguir. 1+ ¼ + 1/9 + 1/16 + 1/25 .... Assinale a opção que indica o pseudocódigo que calcula e exibe corretamente o somatório dos dez primeiros termos dessa série. a) b) c) d) Prof. Victor Dalton Aula 08 51 de 69| www.direcaoconcursos.com.br Informática para Agente e Escrivão da Polícia Federal - 2020 e) Comentários: Como é o perfil da FGV, a questão, desde o começo, exige um pouco do nosso raciocínio. Desde já, a primeira coisa que você precisa notar é que o somatório está sendo composto, nos denominadores dos termos, pelos quadrados dos números inteiros positivos, em ordem crescente. Afinal, 1+ ¼ + 1/9 + 1/16 + 1/25 .... equivale a 1+ 1/22 + 1/32 + 1/42 + 1/52 .... Logo, nas alternativas, eu já imagino que devo buscar algum algoritmo que faça tal procedimento. Vejamos a alternativa a: Preparemos nosso teste de mesa: S (somatório) 0 K 1 T Na primeira iteração, T recebe 1/1*1, que dá 1, S recebe 0 + 1, que dá 1, e K incrementa em 1, que também dá 2. Ao final do primeiro loop, teremos: S (somatório) 0 1 K 1 2 T 1 1 Ao iniciar a segunda iteração, T recebe 1/2*2, que dá ¼, certo? Prof. Victor Dalton Aula 08 52 de 69| www.direcaoconcursos.com.br Informática para Agente e Escrivão da Polícia Federal - 2020 ERRADO! Perceba que não há parênteses entre os operadores. E, neste caso, divisão e multiplicação estão igualmente posicionados na hierarquia dos operadores. Logo, 1/2*2 é 0,5*2, que dá 1! Portanto, percebe-se que a alternativa a) não conduzirá à resposta correta. Vendo a alternativa b). Preparemos, novamente, nosso teste de mesa: S (somatório) 0 K 1 T Na primeira iteração, T recebe 1/(1*1), que dá 1, S recebe 0 + 1, que dá 1, e K incrementa em 1, que também dá 2. Ao final do primeiro loop, teremos: S (somatório) 0 1 K 1 2 T 1 1 Ao iniciar a segunda iteração, T recebe 1/(2*2), que dá ¼ , S recebe 1 + ¼ , que dá 1,25 , e K incrementa em 1, que dá 3. S (somatório) 0 1 1 + ¼ K 1 2 3 T 1 1 ¼ Nos parece o caminho certo! Vamos fazer a terceira iteração só pra confirmar? T receberá 1/(3*3), que dá 1/9, S recebe 1 + ¼ + 1/9, e K incrementa em 1, que dá 4. Prof. Victor Dalton Aula 08 53 de 69| www.direcaoconcursos.com.br Informática para Agente e Escrivão da Polícia Federal - 2020 S (somatório) 0 1 1 + ¼ 1 + ¼ + 1/9 K 1 2 3 4 T 1 1 ¼ 1/9 Portanto, a alternativa b) é o item correto. Mas, professor, não seria ideal calcular o código até o final só pra confirmar que essa realmente é a alternativa certa? E não seria bom testar também TODAS as demais alternativas? Veja, você terá toda uma prova para fazer, além desta questão aqui. Estará com tempo sobrando? Quando você entende bem os passos de um algoritmo, nas primeiras duas ou três iterações, será capaz de confirmar o comportamento dele até o fim, sem precisar conferir passo-a-passo, não concorda? Resposta certa, alternativa b). 32. (FGV – SEFIN/RO – Auditor Fiscal – 2018) Analise o trecho do pseudocódigo a seguir. a := 2; b := a*10; while a<10 anda b>14 begin if a<>b begin if a>5 print (a,b) else a:= a+3; end else begin
Compartilhar