Baixe o app para aproveitar ainda mais
Prévia do material em texto
Contato: alexandre.lenin@gmail.com Tecnólogo em Processamento de Dados ◦ Graduado em 1992 Mestre em Ciência da Computação (UnB) ◦ Inteligência Artificial (1999) ◦ (Algoritmo para) Aprendizado Automático em Redes Bayesianas. Analista de Planejamento e Orçamento – APO Cargos anteriores ◦ Serpro – Analista de Sistemas (2005) ◦ IBAMA – Analista Ambiental (2005-2007) ◦ Receita Federal – Analista-Tributário (2007-2009) Principais aprovações ◦ STJ, PF (1ª fase), Câmara Legislativa, TJDFT Professor ◦ Informática para Concursos ◦ Cursos técnicos desde 18 anos ◦ Professor Universitário desde 1998 Algoritmos, Estruturas de Dados, Compiladores, Inteligência Artificial, Linguagens Formais e Autômatos. ◦ Coordenador de Curso de Ciência da Computação Contato: alexandre.lenin@gmail.com alexandre.lenin@gmail.com Mais: www.provasdeti.com.br Rede social dos concurseiros de TI: www.itnerante.com.br Profile http://www.itnerante.com.br/profiles/AlexandreLeninCarneiro http://www.provasdeti.com.br/ http://www.itnerante.com.br/ Prof. Alexandre Lênin Conceitos Preliminares ◦ Teoria da Computação e Algoritmos ◦ Processo de Programação ◦ Algoritmos x Linguagens de Programação Máquina Hipotética Algoritmos ◦ construção de algoritmos ◦ tipos de dados simples e estruturados; ◦ variáveis e constantes; ◦ comandos de atribuição, entrada e saída; ◦ bloco de comandos; ◦ estruturas de controle, seleção, repetição e desvio; ◦ operadores e expressões; Teoria da Computação e Algoritmos Processo de Programação Algoritmos x Linguagens de Programação Alan Mathison Turing nasceu em 23 de junho de 1912 em Londres. ◦ reconhecido como um dos grandes pioneiros no campo da computação. Na II Guerra Mundial, Turing foi trabalhar no Departamento de Comunicações da Grã Bretanha com o intuito de quebrar o código das comunicações alemãs, produzido por um tipo de computador chamado Enigma. SISTEMA DE PROCESSAMENTO DE DADOS DADOS DE ENTRADA PROCESSAMENTO DE DADOS DADOS DE SAÍDA SISTEMA DE PROCESSAMENTO DE DADOS DADOS DE ENTRADA PROCESSAMENTO DE DADOS DADOS DE SAÍDA DADOS x PROGRAMA Categorias de Software ◦ Software Básico ◦ Sistema Operacional ◦ Linguagem de Programação ◦ Software Aplicativo Pacote de Software Sistemas Especialistas Inteligência Artificial Homem Computador Categorias de Software ◦ Software Básico ◦ Sistema Operacional ◦ Linguagem de Programação ◦ Software Aplicativo Pacote de Software Sistemas Especialistas Inteligência Artificial Homem Computador Categorias de Software ◦ Software Básico ◦ Sistema Operacional ◦ Linguagem de Programação ◦ Software Aplicativo Pacote de Software Sistemas Especialistas Inteligência Artificial Homem Computador Categorias de Software ◦ Software Básico ◦ Sistema Operacional ◦ Linguagem de Programação ◦ Software Aplicativo Pacote de Software Sistemas Especialistas Inteligência Artificial Homem Computador Categorias de Software ◦ Software Básico ◦ Sistema Operacional ◦ Linguagem de Programação ◦ Software Aplicativo Pacote de Software Sistemas Especialistas Inteligência Artificial Homem Computador Categorias de Software ◦ Software Básico ◦ Sistema Operacional ◦ Linguagem de Programação ◦ Software Aplicativo Pacote de Software Sistemas Especialistas Inteligência Artificial Homem Computador Categorias de Software ◦ Software Básico ◦ Sistema Operacional ◦ Linguagem de Programação ◦ Software Aplicativo Pacote de Software Sistemas Especialistas Inteligência Artificial Homem Computador Categorias de Software ◦ Software Básico ◦ Sistema Operacional ◦ Linguagem de Programação ◦ Software Aplicativo Pacote de Software Sistemas Especialistas Inteligência Artificial Homem Computador Um algoritmo é formalmente uma sequência finita de passos que levam a execução de uma tarefa. ◦ “Chupar uma bala”. Pegar a bala Retirar o papel Jogar o papel no lixo Chupar a bala Suponha um carro em viagem. Num dado instante o carro comporta-se como se um pneu dianteiro, não se sabe qual, estivesse furado. Descreva um algoritmo para o motorista – que é um robô – trocar o pneu, se possível e necessário, e continuar a viagem. Lembre-se que se trata de um robô desprovido de raciocínio ou interpretações. Um algoritmo que comumente é apresentado como solução é: ◦ Parar o carro ◦ Trocar o pneu ◦ Seguir viagem Um algoritmo que comumente é apresentado como solução é: ◦ Parar o carro ◦ Trocar o pneu ◦ Seguir viagem Infelizmente este robô ou não entende o comando parar o carro. ◦ É preciso descrever os passos para este comando. Um algoritmo que comumente é apresentado como solução é: ◦ Parar o carro Usar o freio pedal ◦ Trocar o pneu ◦ Seguir viagem Um algoritmo que comumente é apresentado como solução é: ◦ Parar o carro Usar o freio pedal Vamos torcer para que o carro não se desgoverne!!! De um modo geral é isso que acontece = acidente!!! ◦ Trocar o pneu ◦ Seguir viagem Um algoritmo que comumente é apresentado como solução é: ◦ Parar o carro Controlar a direção para evitar que o carro saia da pista Retire o pé do acelerador Reduzir as marchar até parar. Ao estar em baixa velocidade, desviar para o acostamento Desligar o carro após parar ◦ Trocar o pneu ◦ Seguir viagem Um algoritmo que comumente é apresentado como solução é: ◦ Parar o carro Controlar a direção para evitar que o carro saia da pista Retire o pé do acelerador Reduzir as marchar até parar. Ao estar em baixa velocidade, desviar para o acostamento Desligar o carro após parar ◦ Trocar o pneu ◦ Seguir viagem Vamos torcer para dar tudo certo, pois existem atividades interdependentes ◦ Os programas de computadores nada mais são do que a representação de algoritmos escrita numa linguagem de programação Linguagens de Programação ◦ é um conjunto de termos (vocabulário) e de regras (sintaxe) que permitem a formulação de instruções a um computador. 1ª Geração: Linguagens Binárias 2ª Geração: Linguagens Assembly 3ª Geração: Linguagens Alto-Nível 4ª Geração: Linguagens Consulta 5ª Geração: Linguagens Naturais Nível de Abstração Consumo de Recursos de Máquina Facilidade de Programação - - + + 1ª 2ª 3ª 4ª 5ª Fase I: Especificação do Problema ◦ Visa a compreensão completa e clara do problema. ◦ Responde à questão: Qual é o problema ? Fase II: Projeto de Solução em Alto-Nível ◦ Quais transformações são necessárias na entrada para gerar a saída desejada. ◦ Responde à questão: Como se resolve o problema ? Fase III: Análise de Alternativas ◦ Determinar qual a solução conveniente no momento. ◦ Responde à questão: Qual a solução mais adequada ? Fase IV: Refinamento e Codificação ◦ Transformar a solução em códigos viáveis no ambiente computacional disponível. ◦ Responde à questão: Como viabilizar a solução no ambiente ? Fase V: Verificação de Comportamento (teste) ◦ Responde à questão: A solução contempla integralmente a especificação do problema ? Resumo ◦ Fase I: Qual é o problema ? ◦ Fase II: Como se resolve o problema ? ◦ Fase III: Qual a solução mais adequada ? ◦ Fase IV: Como viabilizar a solução no ambiente ? ◦ Fase V: A solução contempla integralmente a especificação do problema ? ◦ Gráfico Fluxogramas Diagramas hierárquicos defluxo Gráficos de estrutra ◦ Textual Descrição Narrativa Português Estruturado Portugol (pseudocódigo) Fluxogramas Diagrama de Chaplin Descrição Narrativa Português Estruturado (textual) Regras para construção de algoritmos ◦ Ser objetivo nas instruções; ◦ Usar somente um verbo por frase; ◦ Escrever textos simples, para leigos; ◦ Usar frases curtas e simples; ◦ Usar palavras que não tenham sentido dúbio. Teste de mesa ◦ Como realizar testes de verificação da corretude de um algoritmo de forma simples e interativa? Operador - só faz o que for ordenado, não toma decisões Conjunto de escaninhos - com capacidade para um cartão cada Máquina de calcular - executa as operações Caixa de entrada - para receber cartões de fora Máquina de escrever - para dar saída às informações / resultados Existe uma INSTRUÇÃO em cada cartão; O operador segue de escaninho em escaninho, fazendo exatamente o que está escrito em cada cartão, até encontrar um cartão contendo uma instrução que manda que ele PARE. Exemplo: ◦ E1 : armazene o valor 1 em E10 ◦ E2 : leia o conteúdo de E11 (externo - a caixa de entrada) ◦ E3 : multiplique E10 com E11 (usando a máquina de calcular) e armazene o resultado em E10 ◦ E4 : subtraia o valor 1 de E11 ◦ E5 : se o valor de E11 > 0, volte para E3 ◦ E6 : imprima o conteúdo de E10 (usando a máquina de escrever) ◦ E7 : PARE E10 E11 E12 ... 1 E1 : armazene o valor 1 em E10 E2 : leia o conteúdo de E11 (externo - a caixa de entrada) E3 : multiplique E10 com E11 (usando a máquina de calcular) e armazene o resultado em E10 E4 : subtraia o valor 1 de E11 E5 : se o valor de E11 > 0, volte para E3 E6 : imprima o conteúdo de E10 (usando a máquina de escrever) E7 : PARE E10 E11 E12 ... 1 3 E1 : armazene o valor 1 em E10 E2 : leia o conteúdo de E11 (externo - a caixa de entrada) E3 : multiplique E10 com E11 (usando a máquina de calcular) e armazene o resultado em E10 E4 : subtraia o valor 1 de E11 E5 : se o valor de E11 > 0, volte para E3 E6 : imprima o conteúdo de E10 (usando a máquina de escrever) E7 : PARE E10 E11 E12 ... 1 3 E1 : armazene o valor 1 em E10 E2 : leia o conteúdo de E11 (externo - a caixa de entrada) E3 : multiplique E10 com E11 (usando a máquina de calcular) e armazene o resultado em E10 E4 : subtraia o valor 1 de E11 E5 : se o valor de E11 > 0, volte para E3 E6 : imprima o conteúdo de E10 (usando a máquina de escrever) E7 : PARE E10 E11 E12 ... 3 3 E1 : armazene o valor 1 em E10 E2 : leia o conteúdo de E11 (externo - a caixa de entrada) E3 : multiplique E10 com E11 (usando a máquina de calcular) e armazene o resultado em E10 E4 : subtraia o valor 1 de E11 E5 : se o valor de E11 > 0, volte para E3 E6 : imprima o conteúdo de E10 (usando a máquina de escrever) E7 : PARE E10 E11 E12 ... 3 2 E1 : armazene o valor 1 em E10 E2 : leia o conteúdo de E11 (externo - a caixa de entrada) E3 : multiplique E10 com E11 (usando a máquina de calcular) e armazene o resultado em E10 E4 : subtraia o valor 1 de E11 E5 : se o valor de E11 > 0, volte para E3 E6 : imprima o conteúdo de E10 (usando a máquina de escrever) E7 : PARE E10 E11 E12 ... 3 2 E3 : multiplique E10 com E11 (usando a máquina de calcular) e armazene o resultado em E10 E4 : subtraia o valor 1 de E11 E5 : se o valor de E11 > 0, volte para E3 E10 E11 E12 ... 6 2 E3 : multiplique E10 com E11 (usando a máquina de calcular) e armazene o resultado em E10 E4 : subtraia o valor 1 de E11 E5 : se o valor de E11 > 0, volte para E3 E10 E11 E12 ... 6 1 E3 : multiplique E10 com E11 (usando a máquina de calcular) e armazene o resultado em E10 E4 : subtraia o valor 1 de E11 E5 : se o valor de E11 > 0, volte para E3 E10 E11 E12 ... 6 1 E3 : multiplique E10 com E11 (usando a máquina de calcular) e armazene o resultado em E10 E4 : subtraia o valor 1 de E11 E5 : se o valor de E11 > 0, volte para E3 E10 E11 E12 ... 6 1 E3 : multiplique E10 com E11 (usando a máquina de calcular) e armazene o resultado em E10 E4 : subtraia o valor 1 de E11 E5 : se o valor de E11 > 0, volte para E3 E10 E11 E12 ... 6 0 E3 : multiplique E10 com E11 (usando a máquina de calcular) e armazene o resultado em E10 E4 : subtraia o valor 1 de E11 E5 : se o valor de E11 > 0, volte para E3 E10 E11 E12 ... 6 0 E3 : multiplique E10 com E11 (usando a máquina de calcular) e armazene o resultado em E10 E4 : subtraia o valor 1 de E11 E5 : se o valor de E11 > 0, volte para E3 E10 E11 E12 ... 6 0 E6 : imprima o conteúdo de E10 (usando a máquina de escrever) E7 : PARE No mesmo algoritmo anterior, avalie as consequências das seguintes alterações: a) E5 : se o valor de E11 > 1, volte para E3, b) E5 : se o valor de E11 >= 0, volte para E3; e c) E7 : XXX Exercícios rápidos. 1) Mostrar a soma de 2 números lidos; 2) Mostrar a média de 3 números lidos; Resolva vários exercícios usando o computador hipotético para internalizar a forma de funcionamento dele. Certamente você ganhará mais confiança e estará treinando seu cérebro a pensar mais detalhadamente. "O problema dos computadores é que eles fazem exatamente aquilo que você os instruiu a fazer e não aquilo que você realmente queria que eles fizessem.“ - Um programador frustrado Algoritmo <declaração de variáveis> Início <comandos> Fim. Algoritmo A, B, C : inteiro Início leia (A, B) C A + B escreva(‘O valor da soma é:’, C) Fim. (ESAF - 2009 - ANA - Analista Administrativo - Tecnologia da Informação - Desenvolvimento) Na programação estruturada, são necessários apenas três blocos de formas de controle para implementar algoritmos. São eles: a) seleção, repetição e aninhamento. b) empilhamento, aninhamento e operação. c) sequência, aninhamento e seleção. d) sequência, seleção e repetição. e) função, operação e programa. (ESAF - 2009 - ANA - Analista Administrativo - Tecnologia da Informação - Desenvolvimento) Na programação estruturada, são necessários apenas três blocos de formas de controle para implementar algoritmos. São eles: a) seleção, repetição e aninhamento. b) empilhamento, aninhamento e operação. c) sequência, aninhamento e seleção. d) sequência, seleção e repetição. e) função, operação e programa. Os dados são representações de abstrações acerca do mundo. São classificados em tipos. Tipos podem ser primitivos ou construídos Tipos primitivos são os tipos fornecidos pela linguagem de programação de forma intrínseca. •São a base para a construção de novos tipos •São eles: inteiros, reais, caracteres, lógico Numérico: Números Inteiros e Reais Caractere: Um símbolo da tabela ASCII Lógico: verdadeiro / falso Literal: agregado de caracteres As linguagens de programação definem seus tipos primitivos; Tipos primitivos do Pascal: 8 (-2)63 +1 a (+2)63 - 1 comp 4 -2.147.438.648 a +2.147.438.647 longint 1 -128 a +127 shortint 2 0 a 65.535 word 2 -32.768 a 32.767 integer 1 0 a 255 byte Tamanho Faixa de Valores Nome Tipos primitivos do Pascal: 10 3.4e-4932 a 1.1e+4932 extended 6 2.9e-39 a 1.7e+38 real 8 5.0e-324 a 1.7e+308 double 4 1.5e-45 a 3.4e+38 single Tamanho Faixa de Valores Nome 1 False, True boolean Tamanho Faixa de Valores Nome 1 Caracteres individuais char Tamanho Faixa de Valores Nome Tipos construídos do Pascal: Ponteiros Pointer Cadeias de caracteres (um tipo de vetor) String Registros (agregados heterogêneos) Record vetorese matrizes Array Descrição Nome Constante é um determinado valor fixo que não se modifica ao longo do tempo, durante a execução de um programa. Conforme o seu tipo, a constante é classificada como sendo numérica, lógica e literal. ◦ Declaração Const <identificador> = <valor> const PI = 3.1416 Uma variável é um espaço reservado na memória do computador para armazenar um tipo de dado determinado. O conteúdo pode ser alterado durante a execução do programa São posições de memória, as quais deve-se associar nomes (identificadores) e um tipo de dado. Só pode armazenar um valor a cada instante declare <identificador> : <tipo de dado> ; Exemplos: declare X : inteiro declare Y : real declare Z : caractere declare K, M, N : lógico (FCC - 2009 - TRE-PI - Técnico Judiciário - Programação de Sistemas) No algoritmo do enunciado, observa-se que os tipos de dados não foram declarados. Nesse caso, para ajustar o algoritmo, os tipos de dados para nome, aux, salario e nivel_superior seriam, respectivamente a) real, lógico, inteiro e real. b) caracter, real, inteiro e lógico. c) real, lógico, inteiro e inteiro. d) caracter, inteiro, real e lógico. e) caracter, lógico, real e real. (FCC - 2009 - TRE-PI - Técnico Judiciário - Programação de Sistemas) No algoritmo do enunciado, observa-se que os tipos de dados não foram declarados. Nesse caso, para ajustar o algoritmo, os tipos de dados para nome, aux, salario e nivel_superior seriam, respectivamente a) real, lógico, inteiro e real. b) caracter, real, inteiro e lógico. c) real, lógico, inteiro e inteiro. d) caracter, inteiro, real e lógico. e) caracter, lógico, real e real. Os operadores são meios pelo qual incrementamos, decrementamos, comparamos e avaliamos dados dentro do computador. Temos três tipos de operadores: ◦ Operadores Aritméticos ◦ Operadores Relacionais ◦ Operadores Lógicos Operadores Aritméticos ◦ Os operadores aritméticos são os utilizados para obter resultados numéricos mesmo subtração - real divisão / mesmo soma + mesmo multiplicação * Tipo Resultado Operação Símbolo inteiro Divisão inteira div inteiro Resto da divisão mod Operadores Relacionais ◦ = , <>, <=, <, >, >= Operadores Lógicos ◦ e - conjunção ◦ ou - disjunção ◦ não - negação Funções ◦ sen(x), cos(x), abs(x), int(x), frac(x), log(x), sqrt(x) Tabela verdade A B A e B A ou B ~A 0 0 0 1 1 0 1 0 1 1 1 0 0 1 0 1 1 1 0 0 ◦ X = Y ◦ X <> Y ◦ X + K > Y + 2 ◦ (A mod B) = 0 ◦ (5 < Z) e (3 > 5 + 6 * 31) ◦ 4 + ( (3 + 2) * 7) ◦ (4.5 mod 5) -->> inválido ◦ X e 5 --> inválido Precedência 1ª parênteses 2ª funções 3ª + - (unário ) 4ª ** (potência ^) 5ª * / mod div 6ª + e - 7ª NÃO 8ª E 9ª OU 10ª relacionais Atribuição Armazena um valor em uma variável. <identificador> <- <expressão | identificador> ◦ ex: X 5 Nome ‘fulano’ Z X + 9 * 15 Entrada e/ou Saída identificador ;imprima )( , caracter expressão identificador ;leia )( , Entrada e/ou Saída ◦ leia ( <identificador> [, <identificador> [ ... ] ] ) captura valores do dispositivo de entrada especificado, armazenando-os nas variáveis. Padrão = teclado ◦ escreva ( <expressão> ) envia a expressão para o dispositivo de saída especificado. Padrão = tela. Expressão pode ser uma combinação de variáveis e constantes separadas por vírgulas. Exemplos ◦ leia (A, B, SOMA) ◦ escreva (" MÉDIA = ", M) ◦ escreva(" VALOR LIDO: ", N, " RESULTADO = ", N ** 2 + 5) Algoritmo Exemplo; declare X, Y, Z : inteiro; início escreva( ‘Digite dois valores inteiros:’); leia(X, Y); Z (X * Y)/2; escreva( ‘A média é = ‘, Z); fim. São espaços utilizados nas linhas de comandos de forma a refletir o alinhamento dos mesmos; ◦ Facilita a identificação das estruturas; ◦ Facilita a identificação dos comandos que “pertencem” a uma estrutura; <nivel 1> ◦ <nível 2>; Comandos do nível 2; ◦ <fim - nível 2>; <fim - nível 1>. ◦ Os comandos são executados na ordem em que aparecem, de cima para baixo. Algoritmo SEQUÊNCIA; declare <lista de variáveis>; início <comando 1>; <comando 2>; ... <comando n>; fim. Os comandos serão executados na ordem em que aparecem. Algoritmo SEQUÊNCIA; declare Nome : literal; Nota1, Nota2, Media : real; início escreva( ‘Digite o nome do aluno:’ ); leia( Nome ); escreva( ‘Digite as 2 notas:’ ); leia( Nota1, Nota2 ); Media <- ( Nota1 + Nota2 ) / 2; escreva( ‘A média é:’ , Media ); fim. (FCC - 2008 - METRÔ-SP - Analista Treinee - Ciências da Computação) Em relação à lógica de programação, considere os pseudocódigos: É correto afirmar: ◦ a) Somente Alg1 tem consistência em sua representação e chega a um resultado. (FCC - 2008 - METRÔ-SP - Analista Treinee - Ciências da Computação) Em relação à lógica de programação, considere os pseudocódigos: É correto afirmar: ◦ b) Ambos os algoritmos abordam o mesmo problema e chegam ao mesmo resultado. (FCC - 2008 - METRÔ-SP - Analista Treinee - Ciências da Computação) Em relação à lógica de programação, considere os pseudocódigos: É correto afirmar: ◦ c) Somente Alg2 tem consistência em sua representação e chega a um resultado. (FCC - 2008 - METRÔ-SP - Analista Treinee - Ciências da Computação) Em relação à lógica de programação, considere os pseudocódigos: É correto afirmar: ◦ d) O resultado da solução apresentada por Alg2 é maior do que a de Alg1. (FCC - 2008 - METRÔ-SP - Analista Treinee - Ciências da Computação) Em relação à lógica de programação, considere os pseudocódigos: É correto afirmar: ◦ e) O resultado da solução apresentada por Alg2 é menor do que a de Alg1. (CESGRANRIO - 2004 - Prefeitura de Manaus - Analista de Sistemas) Considere a sub-rotina abaixo para responder às questões XX e XX. Com base no algoritmo acima, e supondo que o valor fornecido para "A" na linha "leia A" seja 3 e o valor fornecido para "B" na linha "leia B" seja 4, pode-se afirmar que o valor da variável "C" na linha "escreva C" é: a) 24 b) 28 c) 32 d) 34 e) 43 (CESGRANRIO - 2004 - Prefeitura de Manaus - Analista de Sistemas) Considere a sub-rotina abaixo para responder às questões XX e XX. Com base no algoritmo acima, e supondo que o valor fornecido para "A" na linha "leia A" seja 3 e o valor fornecido para "B" na linha "leia B" seja 4, pode-se afirmar que o valor da variável "C" na linha "escreva C" é: a) 24 b) 28 c) 32 d) 34 e) 43 1) Dados dois números inteiros A e B, calcular e exibir: C=A+B+7, D=A.B-A, E=A2, F=2.A-5.B, G=5.A/B-7.A, H=5.A/(B-7.A), J=(A3-senB)/7. 2) Calcular e escrever a média aritmética de duas notas fornecidas pelo usuário. 3) Dada a temperatura de um corpo, em graus Fahrenheit, calcular e exibir o valor da referida temperatura em graus Celsius e em Kelvin. Fazer simulações. 4) Dado um número inteiro de segundos, determinar o seu valor equivalente em horas, minutos e segundos. Simular para 16723. 5) Dado um número inteiro e positivo A, calcular e exibir: B=A DIV 5, C=A MOD 5, D= A/5 e E=5/A. 6) Ler dois valores para as variáveis A e B, efetuar a troca dos valores de forma que a variável A passe a possuir o valor de B e que a variável B passe a possuir o valor da variável A. Apresentar os valores trocados. Algoritmo Números; declare A, B, C, D, E, F, G, H, J : real; início escreva( ‘Digite o valor de A e B:’ ); leia(A, B); C A+B+7;D A*B-A; E A*A; F 2 * A-5*B; G 5*A/B-7*A; H 5*A/(B-7*A); J (A*A*A-sen(B))/7; fim. Algoritmo Media; declare NotaB1, NotaB2, Media : real; início escreva( ‘Digite a primeira nota:’ ); leia(NotaB1); escreva( ‘Digite a segunda nota:’ ); leia(NotaB2); Media (NotaB1 + NotaB2)/2; escreva(“A Média é =“, Media); fim. Algoritmo Transforma; declare F, C, K: real; início escreva( ‘Digite a temperatura em fahrenheit:’ ); leia(F); C (F-32) / 1.8; K C + 273; escreva(“Graus Celsius=“, C); escreva(“Graus Kelvin=“, K); fim. Algoritmo Horas; declare N, S, M, H: inteiro; início escreva( ‘Digite um número inteiro de segundos:’ ); leia(N); H N DIV 3600; M (N MOD 3600) DIV 60; S (N MOD 3600) MOD 60 escreva(S, “Segundos são “, H, “:”, M, “:”, S); fim. Algoritmo Div_Mod; declare A, B, C: inteiro; declare D, E: real; início escreva( ‘Digite um número inteiro positivo:’ ); leia(A); B A MOD 5; C A DIV 5; D A / 5; E 5 / A; fim. Algoritmo Troca; declare A, B, Aux : real; início escreva( ‘Digite dois valores:’ ); leia(A,B); Aux <- A; A <- B; B <- Aux; escreva( A, B ); fim. Escreva outra solução para este problema, sem utilizar a terceira variável! ◦ Em muitas situações, é necessário executar um grupo de ações dependendo do resultado de certas avaliações. ◦ Imagine o caso de identificar se um aluno foi ou não aprovado. O resultado depende da avaliação da média obtida pelo aluno. ◦ Usamos o DESVIO CONDICIONAL para executar um grupo de comandos dependendo do resultado de uma expressão lógica. comandos cond Verdadeiro Falso Se a condição for verdadeira, provocará um desvio e executará o bloco de comandos. ... se <condição> então <instrução para condição verdadeira>; fimse ... ◦ Condição é uma expressão lógica. ◦ Se o resultado da condição for verdadeiro, será executado o comando após a palavra então. ◦ Caso a condição resulte em falso, ou após a execução da instrução, o programa continua... Algoritmo DesvioSimples declare N1, N2, Media : real início escreva( ‘Digite duas notas:’ ) leia(N1, N2) Media <- (N1 + N2)/2 se Media < 7.0 então escreva(‘Deve fazer o Exame Final’) fimse escreva(‘Média = ’, Media) fimalgoritmo se <condição> então <instrução para condição verdadeira> senão <instrução para condição falsa>; fim-se ◦ Se o resultado da condição for verdadeiro, será executado o comando após a palavra então, caso contrário, será executado a instrução após a palavra senão. ◦ Somente uma das duas será executada. Após, o programa continua... comandosA cond Verdadeiro Falso Se a condição for verdadeira, executará o bloco de comandos A, caso contrário, executará o bloco B. Nunca os dois. comandosB Algoritmo DesvioComposto declare N1, N2, Media : real início escreva( ‘Digite duas notas:’ ) leia(N1, N2) Media <- (N1 + N2)/2 se Media < 5.0 então escreva(‘Aluno Reprovado!!!’) senão escreva(‘Aluno Aprovado!!!’) fimse escreva(‘Média = ’, Media) fimalgoritmo (FCC - 2010 - DPE - SP - Agente de Defensoria - Analista de Sistemas) É utilizada para avaliar uma determinada expressão e definir se um bloco de código deve ou não ser executado. Essa é a definição da estrutura condicional: a) For b) If...Then...Else c) While d) Do...While e) Next (FCC - 2010 - DPE - SP - Agente de Defensoria - Analista de Sistemas) É utilizada para avaliar uma determinada expressão e definir se um bloco de código deve ou não ser executado. Essa é a definição da estrutura condicional: a) For b) If...Then...Else c) While d) Do...While e) Next (FCC/2012/TST - Técnico Judiciário - Programação) Considere o trecho de um algoritmo em pseudocódigo que mostra comandos condicionais (se) aninhados com início e fim delimitados por { }: Analisando este trecho, é correto afirmar que a) se B1 for falso, o Comando3 e o Comando4 serão executados. b) se B2 for verdadeiro, somente o Comando3 será executado. c) o Comando5 poderá ser o único comando a ser executado. d) o Comando4 sempre será executado, uma vez que o comando B2 é sempre falso. e) o Comando5 sempre será executado. (FCC/2012/TST - Técnico Judiciário - Programação) Considere o trecho de um algoritmo em pseudocódigo que mostra comandos condicionais (se) aninhados com início e fim delimitados por { }: Analisando este trecho, é correto afirmar que a) se B1 for falso, o Comando3 e o Comando4 serão executados. b) se B2 for verdadeiro, somente o Comando3 será executado. c) o Comando5 poderá ser o único comando a ser executado. d) o Comando4 sempre será executado, uma vez que o comando B2 é sempre falso. e) o Comando5 sempre será executado. (FUMARC/2004/Analista de Sistemas) Um programador escreveu esta condição para uma cláusula SE: SE ( (preço <> 100) E (quantidade < 10) ) ENTÃO... A cláusula está com a sintaxe correta, mas o teste da condição está levando a ações erradas, se considerados os requerimentos do software. A cláusula correta seria, exatamente, a negação da cláusula inicialmente escrita. Marque a alternativa que possui a cláusula CORRETA. a) SE ( (preço = 100) OU (quantidade >= 10) ) ENTÃO... b) SE ( (preço <> 100) OU (quantidade < 10) ) ENTÃO... c) SE ( (preço = 100) E (quantidade > 10) ) ENTÃO... d) SE ( (preço = 100) OU (quantidade > 10) ) ENTÃO... (FUMARC/2004/Analista de Sistemas) Um programador escreveu esta condição para uma cláusula SE: SE ( (preço <> 100) E (quantidade < 10) ) ENTÃO... A cláusula está com a sintaxe correta, mas o teste da condição está levando a ações erradas, se considerados os requerimentos do software. A cláusula correta seria, exatamente, a negação da cláusula inicialmente escrita. Marque a alternativa que possui a cláusula CORRETA. a) SE ( (preço = 100) OU (quantidade >= 10) ) ENTÃO... b) SE ( (preço <> 100) OU (quantidade < 10) ) ENTÃO... c) SE ( (preço = 100) E (quantidade > 10) ) ENTÃO... d) SE ( (preço = 100) OU (quantidade > 10) ) ENTÃO... ◦ Pode-se utilizar um grupo de comandos ao invés de uma única instrução. Para tanto deve-se criar um bloco de comandos usando as palavras início e fim. início <bloco de comandos> fim Exemplo se Media < 7.0 então início escreva(‘Nota EF1:’) leia(EF1) MediaFinal <- (Media+EF1) / 2 fim senão escreva(‘Aprovado.’) fimse Aninhamento de Estruturas ◦ Aninhamento = Uma estrutura pode conter outras estruturas em sua definição. ◦ Uma estrutura condicional pode conter outras estruturas condicionais em sua definição. ◦ Não há limites para a quantidade de níveis de aninhamento. (FCC/2012/TRF - 2ª REGIÃO/Técnico Judiciário – Informática) Analise o algoritmo abaixo: Sobre ele é INCORRETO afirmar: a) Exibirá o maior entre três números lidos, exceto se os três valores forem iguais. b) Se forem lidos os valores 1, 3 e 6 nas variáveis n1, n2 e n3 respectivamente, a variável m receberá o valor 1, em seguida o valor 3 e, por último, o valor 6. c) Se forem lidos os valores 7, 2 e 9 nas variáveis n1, n2 e n3 respectivamente, a variável m receberá o valor 7, em seguida o valor 2 e, por último, o valor 9. d) Se forem lidos os valores 9, 7 e 2 nas variáveis n1, n2 e n3 respectivamente, a variável m receberá apenas o valor 9. e) Se forem lidos os valores -1, -3 e -8 nas variáveis n1, n2 e n3 respectivamente, a variável m receberá apenas o valor -1. (FCC/2012/TRF - 2ª REGIÃO/Técnico Judiciário – Informática) Analise o algoritmo abaixo: Sobreele é INCORRETO afirmar: a) Exibirá o maior entre três números lidos, exceto se os três valores forem iguais. b) Se forem lidos os valores 1, 3 e 6 nas variáveis n1, n2 e n3 respectivamente, a variável m receberá o valor 1, em seguida o valor 3 e, por último, o valor 6. c) Se forem lidos os valores 7, 2 e 9 nas variáveis n1, n2 e n3 respectivamente, a variável m receberá o valor 7, em seguida o valor 2 e, por último, o valor 9. d) Se forem lidos os valores 9, 7 e 2 nas variáveis n1, n2 e n3 respectivamente, a variável m receberá apenas o valor 9. e) Se forem lidos os valores -1, -3 e -8 nas variáveis n1, n2 e n3 respectivamente, a variável m receberá apenas o valor -1. Considerando os seguintes valores: A=3, B=2, C=5 e D=7, indique o resultado da variável X, dos trechos abaixo: ◦ a) se não (D > 5) então X <- (A + B) / D senão X <- (A - B) * C; ◦ b) se (A > 2) e (B < 7) então X <- (A + 2) * (B - 2) senão X <- (A - B) / / D * (C + D); ◦ c) se (A = 2) ou (B < 7) então X <- (A + 2) * (B - 2) senão X <- (A + B) / D * (C + D); Considerando os seguintes valores: A=3, B=2, C=5 e D=7, indique o resultado da variável X, dos trechos abaixo: ◦ a) se não (D > 5) então X <- (A + B) * D senão X <- (A - B) * C; ◦ b) se (A > 2) e (B < 7) então X <- (A + 2) * (B - 2) senão X <- (A - B) / / D * (C + D); ◦ c) se (A = 2) ou (B < 7) então X <- (A + 2) * (B - 2) senão X <- (A + B) / D * (C + D); X = 5 X = 0 X = 0 Efetuar a leitura de três valores inteiros e distintos (A, B e C) e apresentar o maior valor. Efetuar a leitura de três valores inteiros e distintos (A, B e C) e apresentar o maior valor. Algoritmo Um; declare A, B, C : inteiro; início escreva( ‘Digite três valores inteiros: ’ ); leia(A, B, C); se A > B então se A > C então escreva(A) senão escreva(C) fim-se senão se B > C então escreva(B) senão escreva(C); fim-se fim-se fim. Algoritmo Um_outraSolucao; declare A, B, C : inteiro; início escreva( ‘Digite três valores inteiros: ’ ); leia(A, B, C); se A > B então se A > C então Maior <- A senão Maior <- C fim-se senão se B > C então Maior <- B senão Maior <- C; fim-se fim-se escreva(Maior); fim. Algoritmo Um_outraSolucao2; declare A, B, C : inteiro; início escreva( ‘Digite três valores inteiros: ’ ); leia(A, B, C); se (A > B) e (A > C) então Maior <- A senão se B > C então Maior <- B senão Maior <- C; fim-se fim-se escreva(Maior); fim. A estrutura Caso é uma estrutura de seleção múltipla; ◦ Neste tipo de estrutura, temos uma expressão a ser avaliada e várias “guardas” (possíveis valores); ◦ Os comandos cuja “guarda” é verdadeira (encaixa- se com o resultado da expressão) será executada; ◦ pode-se incluir uma “guarda” padrão. ◦ Somente pode-se utilizar valores escalares (inteiro, caractere, boolean) Sintaxe Caso <expressão> seja <guarda1> : <comandos>; <guarda2> : <comandos>; ... <guardan> : <comandos>; <default> : <comandos>; fim; Sintaxe: escolha (<variável>) caso <valor11>, <valor12>, ..., <valor1n> <seqüência-de-comandos-1> caso <valor21>, <valor22>, ..., <valor2m> <seqüência-de-comandos-2> ... outrocaso <seqüência-de-comandos-extra> fimescolha (CESGRANRIO - 2006 - DNPM - Técnico Administrativo - Especialidade - Informática) Considere o algoritmo abaixo, descrito em pseudocódigo. Suponha que os dados de entrada SALARIO e TITULO sejam, respectivamente, "1000,00" e "Doutor". Qual o valor do salário com a gratificação, em reais, que será apresentado na saída do algoritmo? a) 1000,00 b) 2000,00 c) 3000,00 d) 5000,00 e) 6000,00 Suponha que os dados de entrada SALARIO e TITULO sejam, respectivamente, "1000,00" e "Doutor". Qual o valor do salário com a gratificação, em reais, que será apresentado na saída do algoritmo? a) 1000,00 b) 2000,00 c) 3000,00 d) 5000,00 e) 6000,00 Permitem a execução de comandos repetidas vezes. ◦ Repetição condicional: a repetição acontecerá com base em uma condição. Condição no início Condição no final ◦ Repetição com variável de controle: a repetição será controlada por uma variável (contador) comandos cond Verdadeiro Falso Se a condição for verdadeira, os comandos serão executados e o processo reinicia; caso contrário, a repetição não acontecerá Os comandos do bloco de ações são executados enquanto uma condição é atendida (verdadeira) enquanto <condição> faca <ação 1> <ação 2> ... <ação n> fimenquanto Exemplo ... soma ← 0 i ← 1 enquanto (i ≤ N) faca soma ← soma + i i ← i + 1 fimenquanto escreval(“a soma é:”, soma) Exemplo 2 leia(Nota); enquanto (Nota<>-1) faça início Total <- Total + Nota; N <- N + 1; leia(Nota); fim; Media <- Total / N; escreva( Media ); Este exemplo calcula a média de uma quantidade variável de notas. Quando o operador digitar o valor -1 (FLAG), será calculada a média. Entretanto, o exemplo não funciona corretamente, por quê? Exemplo 2 - corrigido leia(Nota); enquanto (Nota <> -1) faça início Total <- Total + Nota; N <- N + 1; leia(Nota); fim; se N > 0 então Media <- Total / N; fim-se escreva( Media ); Cuidado com os laços (repetições) infinitos. Em algumas construções, a condição da estrutura de repetição (condição de interrupção) não resulta em valores que resultem em interrupção da repetição. Nestes casos, o programa é executado para sempre. É o costumeiro: TRAVOU! (FUMARC/2007/PREF.MUN.BETIM/Analista de Sistemas da Saúde) Considere que, no algoritmo em alto nível a seguir, todas as variáveis sejam inteiras: Na execução desse algoritmo, o valor impresso na linha 7 é: a) 55 b) 89 c) 144 d) 233 (FUMARC/2007/PREF.MUN.BETIM/Analista de Sistemas da Saúde) Considere que, no algoritmo em alto nível a seguir, todas as variáveis sejam inteiras: Na execução desse algoritmo, o valor impresso na linha 7 é: a) 55 b) 89 c) 144 d) 233 (FUMARC/2007/PREF.MUN.BETIM/Analista de Sistemas da Saúde) Considere que, no algoritmo em alto nível a seguir, todas as variáveis sejam inteiras: Na execução desse algoritmo, o valor impresso na linha 7 é: a) 55 b) 89 c) 144 d) 233 X Y Z 1 1 2 (FUMARC/2007/PREF.MUN.BETIM/Analista de Sistemas da Saúde) Considere que, no algoritmo em alto nível a seguir, todas as variáveis sejam inteiras: Na execução desse algoritmo, o valor impresso na linha 7 é: a) 55 b) 89 c) 144 d) 233 X Y Z 1 1 2 1 2 3 (FUMARC/2007/PREF.MUN.BETIM/Analista de Sistemas da Saúde) Considere que, no algoritmo em alto nível a seguir, todas as variáveis sejam inteiras: Na execução desse algoritmo, o valor impresso na linha 7 é: a) 55 b) 89 c) 144 d) 233 X Y Z 1 1 2 1 2 3 2 3 5 (FUMARC/2007/PREF.MUN.BETIM/Analista de Sistemas da Saúde) Considere que, no algoritmo em alto nível a seguir, todas as variáveis sejam inteiras: Na execução desse algoritmo, o valor impresso na linha 7 é: a) 55 b) 89 c) 144 d) 233 X Y Z 1 1 2 1 2 3 2 3 5 3 5 8 (FUMARC/2007/PREF.MUN.BETIM/Analista de Sistemas da Saúde) Considere que, no algoritmo em alto nívela seguir, todas as variáveis sejam inteiras: Na execução desse algoritmo, o valor impresso na linha 7 é: a) 55 b) 89 c) 144 d) 233 X Y Z 1 1 2 1 2 3 2 3 5 3 5 8 5 8 13 (FUMARC/2007/PREF.MUN.BETIM/Analista de Sistemas da Saúde) Considere que, no algoritmo em alto nível a seguir, todas as variáveis sejam inteiras: Na execução desse algoritmo, o valor impresso na linha 7 é: a) 55 b) 89 c) 144 d) 233 X Y Z 1 1 2 1 2 3 2 3 5 3 5 8 5 8 13 8 13 21 (FUMARC/2007/PREF.MUN.BETIM/Analista de Sistemas da Saúde) Considere que, no algoritmo em alto nível a seguir, todas as variáveis sejam inteiras: Na execução desse algoritmo, o valor impresso na linha 7 é: a) 55 b) 89 c) 144 d) 233 X Y Z 1 1 2 1 2 3 2 3 5 3 5 8 5 8 13 8 13 21 13 21 34 (FUMARC/2007/PREF.MUN.BETIM/Analista de Sistemas da Saúde) Considere que, no algoritmo em alto nível a seguir, todas as variáveis sejam inteiras: Na execução desse algoritmo, o valor impresso na linha 7 é: a) 55 b) 89 c) 144 d) 233 X Y Z 1 1 2 1 2 3 2 3 5 3 5 8 5 8 13 8 13 21 13 21 34 21 34 55 (FUMARC/2007/PREF.MUN.BETIM/Analista de Sistemas da Saúde) Considere que, no algoritmo em alto nível a seguir, todas as variáveis sejam inteiras: Na execução desse algoritmo, o valor impresso na linha 7 é: a) 55 b) 89 c) 144 d) 233 X Y Z 1 1 2 1 2 3 2 3 5 3 5 8 5 8 13 8 13 21 13 21 34 21 34 55 (FUMARC/2007/PREF.MUN.BETIM/Analista de Sistemas da Saúde) Considere que, no algoritmo em alto nível a seguir, todas as variáveis sejam inteiras: Na execução desse algoritmo, o valor impresso na linha 7 é: a) 55 b) 89 c) 144 d) 233 X Y Z 1 1 2 1 2 3 2 3 5 3 5 8 5 8 13 8 13 21 13 21 34 21 34 55 34 55 89 (FUMARC/2007/PREF.MUN.BETIM/Analista de Sistemas da Saúde) Considere que, no algoritmo em alto nível a seguir, todas as variáveis sejam inteiras: Na execução desse algoritmo, o valor impresso na linha 7 é: a) 55 b) 89 c) 144 d) 233 X Y Z 1 1 2 1 2 3 2 3 5 3 5 8 5 8 13 8 13 21 13 21 34 21 34 55 34 55 89 55 89 144 (FUMARC/2007/PREF.MUN.BETIM/Analista de Sistemas da Saúde) Considere que, no algoritmo em alto nível a seguir, todas as variáveis sejam inteiras: Na execução desse algoritmo, o valor impresso na linha 7 é: a) 55 b) 89 c) 144 d) 233 X Y Z 1 1 2 1 2 3 2 3 5 3 5 8 5 8 13 8 13 21 13 21 34 21 34 55 34 55 89 55 89 144 Escrever um programa que lê dois números inteiros, inicial e final, e mostra na tela os números inteiros do inicial até o final (inclusive). Critica: o número final deve ser maior do que o inicial. Implemente um programa que calcula a soma dos números pares entre dois números lidos (inclusive). Escrever programa para calcular, para N (inteiro) lido, o valor de S, dado por 12 1 ... 2 3 1 21 NN NNN S Algoritmo Exerc_Um; var inicial, final, aux, cont : inteiro; início escreva( ‘Digite dois números inteiros:’ ); leia( inicial, final ); se inicial > final então troca(inicial, final); fim-se; cont <- inicial; enquanto (cont <= final) faça início escreva( cont ); cont <- cont + 1; fim; fim. início Aux <- inicial; inicial <- final; final <- Aux; fim; Algoritmo Exerc_dois; var inicial, final, aux, cont, soma : real; início escreva( ‘Digite dois números:’ ); leia( inicial, final ); se inicial < final então troca(inicial, final); fim-se; se (inicial mod 2) = 0 então cont <- inicial senão cont <- inicial + 1; fim-se; enquanto (cont <= final) faça início soma <- soma + cont; cont <- cont + 2; fim; escreva( ’A soma é =‘, soma ); fim. início Aux <- inicial; inicial <- final; final <- inicial; fim; Algoritmo Exerc_três; var num, den, N: inteiro; termo, S : real; início escreva( ‘Digite um número inteiro > 0:’ ); leia( N ); num <- 1; den <- N; enquanto (num <= N) faça início termo <- num / den; soma <- soma + termo; num <- num + 1; den <- den - 1; fim; escreva( ’S =‘, soma ); fim. comandos cond Verdadeiro Falso O bloco de comandos é executado uma vez. Se a condição for falsa, os comandos serão executados novamente; caso contrário, a repetição não acontecerá e o programa continua. Os comandos do bloco de ações são executados até que uma condição seja atendida (verdadeira) repita <ação 1> <ação 2> ... <ação n> ate <condição> Dado o valor de N, calcular a soma dos números inteiros de 1 a N ... soma ← 0 i ← 1 repita soma ← soma + i i ← i + 1 ate (i > N) escreval(“a soma é:”, soma) Exemplo 2 leia(Nota); repita Total <- Total + Nota; N <- N + 1; leia(Nota); até (Nota = -1); Media <- Total / N; escreva( Media ); Este exemplo calcula a média de uma quantidade variável de notas. Quando o operador digitar o valor -1 (FLAG), será calculada a média. O exemplo funciona corretamente? Por quê? (CESGRANRIO - 2004 - Prefeitura de Manaus - Analista de Sistemas) Com base no algoritmo acima, e supondo que o valor fornecido para "B" na linha "leia B" seja 5, pode-se afirmar que o valor da variável "A" na linha "escreva A" é: a) 7 b) 9 c) 12 d) 16 e) 21 (CESGRANRIO - 2004 - Prefeitura de Manaus - Analista de Sistemas) Com base no algoritmo acima, e supondo que o valor fornecido para "B" na linha "leia B" seja 5, pode-se afirmar que o valor da variável "A" na linha "escreva A" é: a) 7 b) 9 c) 12 d) 16 e) 21 (CESGRANRIO - 2005 - MPE- RO - Analista Programador) Analise o algoritmo a seguir. Com base no algoritmo acima, e supondo que o valor fornecido para "B" na linha "leia B" seja 7, pode-se afirmar que o algoritmo apresentará como saída na linha "escreva F", respectivamente, a sequência: a) 0, 1, 2, 3, 4 e 5. b) 1, 2, 3, 4, 5 e 6. c) 1, 1, 2, 3, 5 e 8. d) 1, 1, 3, 5, 7 e 9. e) 1, 2, 3, 6, 7 e 9. (CESGRANRIO - 2005 - MPE- RO - Analista Programador) Analise o algoritmo a seguir. Com base no algoritmo acima, e supondo que o valor fornecido para "B" na linha "leia B" seja 7, pode-se afirmar que o algoritmo apresentará como saída na linha "escreva F", respectivamente, a sequência: a) 0, 1, 2, 3, 4 e 5. b) 1, 2, 3, 4, 5 e 6. c) 1, 1, 2, 3, 5 e 8. d) 1, 1, 3, 5, 7 e 9. e) 1, 2, 3, 6, 7 e 9. Repetições que possuem um número finito de execuções (conhecido) podem ser processadas através de uma repetição controlada por uma variável de controle do tipo contador; Podem ser crescentes ou decrescentes; Idealmente, a execução dos comandos acontece para cada valor de um determinado conjunto de valores. Em cada repetição, a variável de controle assume um dos valores do conjunto. Quando a variável tiver assumido uma vez cada valor, então a repetição termina. para variavel de início ate fim passo <incremento> faca <ação 1> <ação 2> ... <ação n> fimpara Variável é a variável de controle (contador) do laço início: indica o valor inicial da variável de controle. fim: define o valor final da variável de controle incremento: define como a variável de controle se altera a cada repetição para variavel de início ate fim passo <incremento> faca <ação 1> <ação 2> ... <ação n> fimpara A variável de controle assumirá cada elemento entre o valor1 e o valor2 (são os elementos do conjunto); Na primeira vez, a variável de controle assume o valor1 e executa os comandos uma vez. Ao terminara execução, assume o sucessor de valor1 e executa novamente. Ao assumir o valor2 e executar os comandos a repetição é interrompida; Algumas linguagens aceitam definir o tamanho do incremento. para variavel de valor1 ate valor2 passo <incremento> faca <ação 1> <ação 2> ... <ação n> fimpara ... soma ← 0 para i de 1 ate N passo 1 faca soma ← soma + i fimpara escreval(“a soma é:”, soma) ... Dado o valor de N, calcular a soma dos números inteiros de 1 a N (FCC - 2010 - TRF - 4ª REGIÃO - Analista Judiciário) Considere: Dado o algoritmo representado na forma de português estruturado, o valor de saída contido na variável RESP será a) 342. b) 6. c) 22. d) 86. e) 0. algoritmo PROVA var N, X, CONTA, CONTB, EXP, RESP: inteiro inicio N ← 4 X ← 2 RESP ← X para CONTA ← 2 até N passo 2 faça EXP ← X CONTB ← 1 para CONTB = 1 até CONTA-1 passo 1 faça EXP ← EXP * X fim-para RESP ← RESP + EXP fim-para fim (FCC - 2010 - TRF - 4ª REGIÃO - Analista Judiciário) Considere: Dado o algoritmo representado na forma de português estruturado, o valor de saída contido na variável RESP será a) 342. b) 6. c) 22. d) 86. e) 0. algoritmo PROVA var N, X, CONTA, CONTB, EXP, RESP: inteiro inicio N ← 4 X ← 2 RESP ← X para CONTA ← 2 até N passo 2 faça EXP ← X CONTB ← 1 para CONTB ← 1 até CONTA-1 passo 1 faça EXP ← EXP * X fim-para RESP ← RESP + EXP fim-para fim ContaA ContB EXP RESP 2 (FCC - 2010 - TRF - 4ª REGIÃO - Analista Judiciário) Considere: Dado o algoritmo representado na forma de português estruturado, o valor de saída contido na variável RESP será a) 342. b) 6. c) 22. d) 86. e) 0. algoritmo PROVA var N, X, CONTA, CONTB, EXP, RESP: inteiro inicio N ← 4 X ← 2 RESP ← X para CONTA ← 2 até N passo 2 faça EXP ← X CONTB ← 1 para CONTB ← 1 até CONTA-1 passo 1 faça EXP ← EXP * X fim-para RESP ← RESP + EXP fim-para fim ContA ContB EXP RESP 2 2 (FCC - 2010 - TRF - 4ª REGIÃO - Analista Judiciário) Considere: Dado o algoritmo representado na forma de português estruturado, o valor de saída contido na variável RESP será a) 342. b) 6. c) 22. d) 86. e) 0. algoritmo PROVA var N, X, CONTA, CONTB, EXP, RESP: inteiro inicio N ← 4 X ← 2 RESP ← X para CONTA ← 2 até N passo 2 faça EXP ← X CONTB ← 1 para CONTB ← 1 até CONTA-1 passo 1 faça EXP ← EXP * X fim-para RESP ← RESP + EXP fim-para fim ContaA ContB EXP RESP 2 1 2 2 (FCC - 2010 - TRF - 4ª REGIÃO - Analista Judiciário) Considere: Dado o algoritmo representado na forma de português estruturado, o valor de saída contido na variável RESP será a) 342. b) 6. c) 22. d) 86. e) 0. algoritmo PROVA var N, X, CONTA, CONTB, EXP, RESP: inteiro inicio N ← 4 X ← 2 RESP ← X para CONTA ← 2 até N passo 2 faça EXP ← X CONTB ← 1 para CONTB ← 1 até CONTA-1 passo 1 faça EXP ← EXP * X fim-para RESP ← RESP + EXP fim-para fim ContaA ContB EXP RESP 2 1 2 2 1 4 (FCC - 2010 - TRF - 4ª REGIÃO - Analista Judiciário) Considere: Dado o algoritmo representado na forma de português estruturado, o valor de saída contido na variável RESP será a) 342. b) 6. c) 22. d) 86. e) 0. algoritmo PROVA var N, X, CONTA, CONTB, EXP, RESP: inteiro inicio N ← 4 X ← 2 RESP ← X para CONTA ← 2 até N passo 2 faça EXP ← X CONTB ← 1 para CONTB ← 1 até CONTA-1 passo 1 faça EXP ← EXP * X fim-para RESP ← RESP + EXP fim-para fim ContaA ContB EXP RESP 2 1 2 2 1 4 6 (FCC - 2010 - TRF - 4ª REGIÃO - Analista Judiciário) Considere: Dado o algoritmo representado na forma de português estruturado, o valor de saída contido na variável RESP será a) 342. b) 6. c) 22. d) 86. e) 0. algoritmo PROVA var N, X, CONTA, CONTB, EXP, RESP: inteiro inicio N ← 4 X ← 2 RESP ← X para CONTA ← 2 até N passo 2 faça EXP ← X CONTB ← 1 para CONTB ← 1 até CONTA-1 passo 1 faça EXP ← EXP * X fim-para RESP ← RESP + EXP fim-para fim ContaA ContB EXP RESP 2 1 2 2 1 4 6 4 (FCC - 2010 - TRF - 4ª REGIÃO - Analista Judiciário) Considere: Dado o algoritmo representado na forma de português estruturado, o valor de saída contido na variável RESP será a) 342. b) 6. c) 22. d) 86. e) 0. algoritmo PROVA var N, X, CONTA, CONTB, EXP, RESP: inteiro inicio N ← 4 X ← 2 RESP ← X para CONTA ← 2 até N passo 2 faça EXP ← X CONTB ← 1 para CONTB ← 1 até CONTA-1 passo 1 faça EXP ← EXP * X fim-para RESP ← RESP + EXP fim-para fim ContaA ContB EXP RESP 2 1 2 2 1 4 6 4 1 2 (FCC - 2010 - TRF - 4ª REGIÃO - Analista Judiciário) Considere: Dado o algoritmo representado na forma de português estruturado, o valor de saída contido na variável RESP será a) 342. b) 6. c) 22. d) 86. e) 0. algoritmo PROVA var N, X, CONTA, CONTB, EXP, RESP: inteiro inicio N ← 4 X ← 2 RESP ← X para CONTA ← 2 até N passo 2 faça EXP ← X CONTB ← 1 para CONTB ← 1 até CONTA-1 passo 1 faça EXP ← EXP * X fim-para RESP ← RESP + EXP fim-para fim ContaA ContB EXP RESP 2 1 2 2 1 4 6 4 1 2 1 4 (FCC - 2010 - TRF - 4ª REGIÃO - Analista Judiciário) Considere: Dado o algoritmo representado na forma de português estruturado, o valor de saída contido na variável RESP será a) 342. b) 6. c) 22. d) 86. e) 0. algoritmo PROVA var N, X, CONTA, CONTB, EXP, RESP: inteiro inicio N ← 4 X ← 2 RESP ← X para CONTA ← 2 até N passo 2 faça EXP ← X CONTB ← 1 para CONTB ← 1 até CONTA-1 passo 1 faça EXP ← EXP * X fim-para RESP ← RESP + EXP fim-para fim ContaA ContB EXP RESP 2 1 2 2 1 4 6 4 1 2 1 4 2 (FCC - 2010 - TRF - 4ª REGIÃO - Analista Judiciário) Considere: Dado o algoritmo representado na forma de português estruturado, o valor de saída contido na variável RESP será a) 342. b) 6. c) 22. d) 86. e) 0. algoritmo PROVA var N, X, CONTA, CONTB, EXP, RESP: inteiro inicio N ← 4 X ← 2 RESP ← X para CONTA ← 2 até N passo 2 faça EXP ← X CONTB ← 1 para CONTB ← 1 até CONTA-1 passo 1 faça EXP ← EXP * X fim-para RESP ← RESP + EXP fim-para fim ContaA ContB EXP RESP 2 1 2 2 1 4 6 4 1 2 1 4 2 8 (FCC - 2010 - TRF - 4ª REGIÃO - Analista Judiciário) Considere: Dado o algoritmo representado na forma de português estruturado, o valor de saída contido na variável RESP será a) 342. b) 6. c) 22. d) 86. e) 0. algoritmo PROVA var N, X, CONTA, CONTB, EXP, RESP: inteiro inicio N ← 4 X ← 2 RESP ← X para CONTA ← 2 até N passo 2 faça EXP ← X CONTB ← 1 para CONTB ← 1 até CONTA-1 passo 1 faça EXP ← EXP * X fim-para RESP ← RESP + EXP fim-para fim ContaA ContB EXP RESP 2 1 2 2 1 4 6 4 1 2 1 4 2 8 3 (FCC - 2010 - TRF - 4ª REGIÃO - Analista Judiciário) Considere: Dado o algoritmo representado na forma de português estruturado, o valor de saída contido na variável RESP será a) 342. b) 6. c) 22. d) 86. e) 0. algoritmo PROVA var N, X, CONTA, CONTB, EXP, RESP: inteiro inicio N ← 4 X ← 2 RESP ← X para CONTA ← 2 até N passo 2 faça EXP ←X CONTB ← 1 para CONTB ← 1 até CONTA-1 passo 1 faça EXP ← EXP * X fim-para RESP ← RESP + EXP fim-para fim ContaA ContB EXP RESP 2 1 2 2 1 4 6 4 1 2 1 4 2 8 3 16 (FCC - 2010 - TRF - 4ª REGIÃO - Analista Judiciário) Considere: Dado o algoritmo representado na forma de português estruturado, o valor de saída contido na variável RESP será a) 342. b) 6. c) 22. d) 86. e) 0. algoritmo PROVA var N, X, CONTA, CONTB, EXP, RESP: inteiro inicio N ← 4 X ← 2 RESP ← X para CONTA ← 2 até N passo 2 faça EXP ← X CONTB ← 1 para CONTB = 1 até CONTA-1 passo 1 faça EXP ← EXP * X fim-para RESP ← RESP + EXP fim-para fim ContaA ContB EXP RESP 2 1 2 2 1 4 6 4 1 2 1 4 2 8 3 16 22 (FCC - 2010 - TRF - 4ª REGIÃO - Analista Judiciário) Considere: Dado o algoritmo representado na forma de português estruturado, o valor de saída contido na variável RESP será a) 342. b) 6. c) 22. d) 86. e) 0. algoritmo PROVA var N, X, CONTA, CONTB, EXP, RESP: inteiro inicio N ← 4 X ← 2 RESP ← X para CONTA ← 2 até N passo 2 faça EXP ← X CONTB ← 1 para CONTB = 1 até CONTA-1 passo 1 faça EXP ← EXP * X fim-para RESP ← RESP + EXP fim-para fim ContaA ContB EXP RESP 2 1 2 2 1 4 6 4 1 2 1 4 8 16 22 (FCC - 2010 - TRF - 4ª REGIÃO - Analista Judiciário) Considere: Dado o algoritmo representado na forma de português estruturado, o valor de saída contido na variável RESP será a) 342. b) 6. c) 22. d) 86. e) 0. algoritmo PROVA var N, X, CONTA, CONTB, EXP, RESP: inteiro inicio N ← 4 X ← 2 RESP ← X para CONTA ← 2 até N passo 2 faça EXP ← X CONTB ← 1 para CONTB = 1 até CONTA-1 passo 1 faça EXP ← EXP * X fim-para RESP ← RESP + EXP fim-para fim Caso queira interromper uma repetição antes do final natural da mesma, use o comando INTERROMPA; ◦ é claro que esta deve ser incluída em uma estrutura condicional: se (<condição>) então interrompa; fim-se; (CESPE - 2009 - ANAC - Analista Administrativo - Tecnologia da Informação) Na construção de um algoritmo, utilizam-se estruturas de repetição para que um bloco de comandos seja executado várias vezes. Todos os tipos de estrutura de repetição permitem que o bloco de comandos seja executado zero, uma ou mais vezes, de acordo com uma condição que será avaliada a cada iteração. (CESPE - 2009 - ANAC - Analista Administrativo - Tecnologia da Informação) Na construção de um algoritmo, utilizam-se estruturas de repetição para que um bloco de comandos seja executado várias vezes. Todos os tipos de estrutura de repetição permitem que o bloco de comandos seja executado zero, uma ou mais vezes, de acordo com uma condição que será avaliada a cada iteração. ERRADO (CESPE/2010/BANCO DA AMAZÔNIA/Técnico Científico — Área: Tecnologia da Informação) Na programação estruturada, existem estruturas de sequência, de decisão e de iteração. No primeiro tipo, uma tarefa é executada após a outra, linearmente. No segundo, a partir de um teste lógico, determinado trecho de código é executado, ou não. No terceiro, a partir de um teste lógico, determinado trecho de código é repetido por um número finito de vezes. (CESPE/2010/BANCO DA AMAZÔNIA/Técnico Científico — Área: Tecnologia da Informação) Na programação estruturada, existem estruturas de sequência, de decisão e de iteração. No primeiro tipo, uma tarefa é executada após a outra, linearmente. No segundo, a partir de um teste lógico, determinado trecho de código é executado, ou não. No terceiro, a partir de um teste lógico, determinado trecho de código é repetido por um número finito de vezes. CERTO Imagine como faríamos para construir um algoritmo, que lesse os nomes de 500 pessoas e imprimisse um relatório destes mesmos nomes, mas ordenados alfabeticamente. Declarar 500 variáveis? Ler tudo? ◦ Imagine: digitar um comando para cada variável? E se mudar para 1000? E depois voltar para 500? Algoritmo "Inviável" Declare nome1, nome2, ..., nome500: caractere inicio leia (nome1,nome2,...,nome500) ... Fim Inviável ◦ tamanho do algoritmo; ◦ trabalho braçal; Variáveis Indexadas. ◦ várias variáveis cujo identificador difere apenas por um índice. ◦ O índice, geralmente, numérico começando em 1; ◦ Cada variável indexada é tratada como uma variável comum. Também denominados Estruturas compostas homogêneas unidimensionais Permitem a manipulação de um conjunto de informações de um mesmo tipo primitivo Vetores = variáveis indexadas por um só índice; <identificador> : vetor [<tamanho>] de < tipo > Onde: ◦ <tamanho> = VI..VF ◦ Vi é o valor inicial do índice e ◦ VF é o valor final do índice. Exemplo IDADE: VETOR [1..5] DE INTEIRO NOMES: VETOR [1..5] DE CARACTERE Atribuição: ◦ Para se atribuir um valor a um elemento do vetor devemos utilizar o seguinte padrão: < identificador>[<posição>] <valor> Exemplos: nomes[1] “João da Silva” idades[1] 35 nomes[3] “Maria Aparecida” idades[3] idades[1] i 5 idades[i] 45 Algoritmo que lê um vetor NUMERO de 6 posições e o escreve. A seguir, ele conta quantos valores de NUMERO são negativos e escreva esta informação. Algoritmo Declare NUMERO: VETOR [1..6] DE REAL I, conta_neg: INTEIRO início conta_neg <- 0 para i de 1 ate 6 faca leia (NUMERO[i]) se NUMERO[i] < 0 entao conta_neg <- conta_neg + 1 fim-se fim-para para i de 1 ate 6 faca imprima(NUMERO[i]) fim-para imprima("Total de números negativos: ", conta_neg) fim (CESPE - 2009 - ANAC - Analista Administrativo - Tecnologia da Informação) Um array é um agregado, possivelmente heterogêneo, de elementos de dados. Nele, um elemento individual é identificado por sua posição em relação ao primeiro. (CESPE - 2009 - ANAC - Analista Administrativo - Tecnologia da Informação) Um array é um agregado, possivelmente heterogêneo, de elementos de dados. Nele, um elemento individual é identificado por sua posição em relação ao primeiro. ERRADO (FUMARC/2007/PREF.MUN.BETIM/Anal ista de Sistemas da Saúde) Considere que, no algoritmo em alto nível a seguir, V seja um vetor de inteiros contendo 100 elementos indexados de 0 a 99, e todas as demais variáveis sejam inteiras. O objetivo desse algoritmo é: a) Imprimir o vetor V em ordem crescente. b) Imprimir o vetor V em ordem decrescente. c) Imprimir o maior valor armazenado no vetor V. d) Imprimir o menor valor armazenado no vetor V. (FUMARC/2007/PREF.MUN.BETIM/Anal ista de Sistemas da Saúde) Considere que, no algoritmo em alto nível a seguir, V seja um vetor de inteiros contendo 100 elementos indexados de 0 a 99, e todas as demais variáveis sejam inteiras. O objetivo desse algoritmo é: a) Imprimir o vetor V em ordem crescente. b) Imprimir o vetor V em ordem decrescente. c) Imprimir o maior valor armazenado no vetor V. d) Imprimir o menor valor armazenado no vetor V. (FUMARC/2007/MINISTÉRIO PÚBLICO/Análise de Sistemas) Em relação às estruturas de dados, todas as afirmativas estão corretas, EXCETO: a) Vetores são variáveis compostas unidimensionais identificadas por um mesmo nome. b) Matrizes são variáveis compostas multidimensionais individualizadas por índices. c) Registros são conjuntos de dados logicamente relacionados, mas de tipos diferentes. d) Variáveis compostas homogêneas correspondem a posições de memóriacujo conteúdo pode ser de diferentes tipos de dados. (FUMARC/2007/MINISTÉRIO PÚBLICO/Análise de Sistemas) Em relação às estruturas de dados, todas as afirmativas estão corretas, EXCETO: a) Vetores são variáveis compostas unidimensionais identificadas por um mesmo nome. b) Matrizes são variáveis compostas multidimensionais individualizadas por índices. c) Registros são conjuntos de dados logicamente relacionados, mas de tipos diferentes. d) Variáveis compostas homogêneas correspondem a posições de memória cujo conteúdo pode ser de diferentes tipos de dados. (FUMARC/2004/Analista de Sistemas) Seja dado o programa: Marque a alternativa que representa o valor da variável soma a ser impresso por esse programa. a) 20 b) 60 c) 40 d) 34 (FUMARC/2004/Analista de Sistemas) Seja dado o programa: Marque a alternativa que representa o valor da variável soma a ser impresso por esse programa. a) 20 b) 60 c) 40 d) 34 soma ix iy dy dx 0 2 1 (FUMARC/2004/Analista de Sistemas) Seja dado o programa: Marque a alternativa que representa o valor da variável soma a ser impresso por esse programa. a) 20 b) 60 c) 40 d) 34 soma ix iy dy dx 0 2 1 1 -1 -1 (FUMARC/2004/Analista de Sistemas) Seja dado o programa: Marque a alternativa que representa o valor da variável soma a ser impresso por esse programa. a) 20 b) 60 c) 40 d) 34 soma ix iy dy dx 0 2 1 1 -1 -1 3 0 (FUMARC/2004/Analista de Sistemas) Seja dado o programa: Marque a alternativa que representa o valor da variável soma a ser impresso por esse programa. a) 20 b) 60 c) 40 d) 34 soma ix iy dy dx 0 2 1 1 -1 -1 3 0 6 1 (FUMARC/2004/Analista de Sistemas) Seja dado o programa: Marque a alternativa que representa o valor da variável soma a ser impresso por esse programa. a) 20 b) 60 c) 40 d) 34 soma ix iy dy dx 0 2 1 1 -1 -1 3 0 6 1 11 0 -1 (FUMARC/2004/Analista de Sistemas) Seja dado o programa: Marque a alternativa que representa o valor da variável soma a ser impresso por esse programa. a) 20 b) 60 c) 40 d) 34 soma ix iy dy dx 0 2 1 1 -1 -1 3 0 6 1 11 0 -1 17 0 (FUMARC/2004/Analista de Sistemas) Seja dado o programa: Marque a alternativa que representa o valor da variável soma a ser impresso por esse programa. a) 20 b) 60 c) 40 d) 34 soma ix iy dy dx 0 2 1 1 -1 -1 3 0 6 1 11 0 -1 17 0 24 1 (FUMARC/2004/Analista de Sistemas) Seja dado o programa: Marque a alternativa que representa o valor da variável soma a ser impresso por esse programa. a) 20 b) 60 c) 40 d) 34 soma ix iy dy dx 0 2 1 1 -1 -1 3 0 6 1 11 0 -1 17 0 24 1 33 1 -1 (FUMARC/2004/Analista de Sistemas) Seja dado o programa: Marque a alternativa que representa o valor da variável soma a ser impresso por esse programa. a) 20 b) 60 c) 40 d) 34 soma ix iy dy dx 0 2 1 1 -1 -1 3 0 6 1 11 0 -1 17 0 24 1 33 1 -1 33 0 (FUMARC/2004/Analista de Sistemas) Seja dado o programa: Marque a alternativa que representa o valor da variável soma a ser impresso por esse programa. a) 20 b) 60 c) 40 d) 34 soma ix iy dy dx 0 2 1 1 -1 -1 3 0 6 1 11 0 -1 17 0 24 1 33 1 -1 33 0 34 1 (FUMARC/2004/Analista de Sistemas) Seja dado o programa: Marque a alternativa que representa o valor da variável soma a ser impresso por esse programa. a) 20 b) 60 c) 40 d) 34 soma ix iy dy dx 0 2 1 1 -1 -1 3 0 6 1 11 0 -1 17 0 24 1 33 1 -1 33 0 34 1 (FUMARC/2004/Analista de Sistemas) Seja dado o programa: Marque a alternativa que representa o valor da variável soma a ser impresso por esse programa. a) 20 b) 60 c) 40 d) 34 Variáveis indexadas com duas dimensões (matrizes); ◦ são referenciadas por dois índices; ◦ Cada dimensão da matriz, em geral, representa uma classificação de informação. Por exemplo, as linhas poderiam representar um aluno, enquanto as colunas representariam as notas. Mesmo com mais de 2 dimensões também são chamadas de matrizes (multidimensionais) Importante ◦ Cada posição é uma variável e ocupa espaço de memória; A sintaxe para declaração é: <identificador> : vetor [<tamanho1>,<tamanho2>] de < tipo > Ex: PESSOAS: VETOR [1..2,1..3] DE CARACTERE A declaração acima corresponde à declaração de 6 variáveis: PESSOAS[1,1], PESSOAS [1,2], PESSOAS[1,3], PESSOAS[2,1], PESSOAS[2,2], e PESSOAS [2,3]. Para se atribuir um valor a um elemento do vetor devemos utilizar o seguinte padrão: < identificador>[<posição 1>,<posição 2>] <valor> Ex: PESSOAS[1,3] “Tonet” (CESGRANRIO - 2004 - Prefeitura de Manaus - Analista de Sistemas) Um Analista de Sistemas recebeu a tarefa de implementar uma sub-rotina que, a partir de uma matriz de entrada "A", gerasse uma outra matriz de saída "B". Um pedaço desta sub-rotina, implementada em Visual Basic 6.0, está apresentado abaixo. Considere a matriz A = (aij) de dimensão 2 x 2, a seguir, onde aij são os elementos da matriz A. Nesta matriz, por exemplo, o elemento a11 possui o valor 3. A matriz "B" resultante da execução do algoritmo acima, tendo a matriz "A" como entrada, é: a) b) c) d) e) A matriz "B" resultante da execução do algoritmo acima, tendo a matriz "A" como entrada, é: a) b) c) d) e) (FUMARC/2007/PREF.MUN.BETIM/Analista de Sistemas da Saúde) Considere que no algoritmo em alto nível a seguir, M seja uma matriz de booleanos contendo 8 linhas, indexadas de 0 a 7, e 3 colunas, indexadas de 0 a 2; X, Y e Z sejam variáveis inteiras; e todas as demais variáveis sejam booleanas. Considere ainda que M seja a seguinte matriz: Os valores impressos no fim da execução do algoritmo são: a) 0 e 5 b) 4 e 4 c) 7 e 3 d) 8 e 8 (FUMARC/2007/PREF.MUN.BETIM/Analista de Sistemas da Saúde) Considere que no algoritmo em alto nível a seguir, M seja uma matriz de booleanos contendo 8 linhas, indexadas de 0 a 7, e 3 colunas, indexadas de 0 a 2; X, Y e Z sejam variáveis inteiras; e todas as demais variáveis sejam booleanas. Considere ainda que M seja a seguinte matriz: Os valores impressos no fim da execução do algoritmo são: a) 0 e 5 b) 4 e 4 c) 7 e 3 d) 8 e 8 Refinamentos sucessivos ◦ Dividir para conquistar Confiabilidade Legibilidade Manutenibilidade Flexibilidade. Bloco A Bloco Principal instrução 1 instrução 2 instrução n instrução 2 ativa bloco A instrução m Programa instrução 1 Bloco A Bloco Principal instrução 1 instrução 2 instrução n instrução 2 ativa bloco A instrução m Programa instrução 1 Bloco A Bloco Principal instrução 1 instrução 2 instrução n instrução 2 ativa bloco A instrução m Programa instrução 1 Bloco A Bloco Principal instrução 1 instrução 2 instrução n instrução 2 ativa bloco A instrução m Programa instrução 1 Bloco A Bloco Principal instrução 1 instrução 2 instrução n instrução 2 ativa bloco A instrução m Programa instrução 1 Bloco A Bloco Principal instrução 1 instrução 2 instrução n instrução 2 ativa bloco A instrução m Programa instrução 1 Bloco A Bloco Principal instrução 1 instrução 2 instrução n instrução 2 ativa bloco A instrução m Programa instrução 1 Bloco A Bloco Principal instrução 1 instrução 2 instrução n instrução 2 ativa bloco A instrução m Programa instrução 1 Bloco A Bloco Principal instrução 1 instrução 2 instrução n instrução 2 ativa bloco A instruçãom Programa instrução 1 Procedimentos e Funções ◦ Vantagem = reutilização do código ◦ Desvantagem = aumento do tempo de execução Vamos adotar a sintaxe abaixo: Procedimentos ◦ Ações sem retorno de valores. ◦ Não podem ser utilizados em expressões (funcionam como comandos) Funções ◦ Possuem um valor de retorno (=tipo) ◦ O retorno, em geral, não pode ser um arranjo. ◦ Usamos a palavra RETORNE seguida do valor de retorno; Os módulos possuem uma assinatura (interface) e um corpo; Podem possuir variáveis declaradas internamente e/ou usar as variáveis de outros módulos hierarquicamente superiores; ◦ Cuidado com a dependência de outros módulos (acoplamento) Os parâmetros declarados em um módulo são chamados de parâmetros formais. Os parâmetros passados como argumentos quando da chamada do módulo são chamados parâmetros reais. Existem duas formas de passagem de parâmetros: ◦ Passagem por valor ◦ Passagem por referência. Passagem de Parâmetros - por valor Passagem de Parâmetros - por referência procedimento Prc1 (num, cod : inteiro; nome: literal) procedimento Prc1 (var num, cod : inteiro; nome: literal) (ESAF/2008/STN/DESENVOLVIMENTO DE SISTEMAS) Para resolver um determinado problema, um programador tem em mente como deve ser o programa principal que, por sua vez, controlará todas as outras tarefas distribuídas em sub-rotinas, para as quais deverá desenvolver os respectivos algoritmos. Este cenário exemplifica o conceito de programação a) estruturada. b) orientada a objetos. c) funcional. d) numérica. e) orientada a aspectos. (ESAF/2008/STN/DESENVOLVIMENTO DE SISTEMAS) Para resolver um determinado problema, um programador tem em mente como deve ser o programa principal que, por sua vez, controlará todas as outras tarefas distribuídas em sub-rotinas, para as quais deverá desenvolver os respectivos algoritmos. Este cenário exemplifica o conceito de programação a) estruturada. b) orientada a objetos. c) funcional. d) numérica. e) orientada a aspectos. (ESAF/2008/Prefeitura de Natal - RN/Auditor do Tesouro Municipal - Tecnologia da Informação) Analise as seguintes afirmações relacionadas a conceitos básicos sobre Programação: I. Um procedimento é um conjunto de comandos para uma tarefa específica referenciada por um nome no algoritmo principal, retornando um determinado valor no seu próprio nome. II. Podem-se inserir módulos em um algoritmo. Para isso, pode-se utilizar "Procedimentos" ou "Funções". As ações das "Funções" e dos "Procedimentos" são hierarquicamente subordinadas a um módulo principal. III. Cada "Função" ou "Procedimento" pode utilizar constantes ou variáveis do módulo principal ou definir suas próprias constantes ou variáveis. IV. Uma variável global indica o endereço onde um valor é armazenado na memória do computador enquanto um ponteiro representa um valor numérico real. Indique a opção que contenha todas as afirmações verdadeiras. a) I e II. b) II e III. c) III e IV. d) I e III. e) II e IV. (ESAF/2008/Prefeitura de Natal - RN/Auditor do Tesouro Municipal - Tecnologia da Informação) Analise as seguintes afirmações relacionadas a conceitos básicos sobre Programação: I. Um procedimento é um conjunto de comandos para uma tarefa específica referenciada por um nome no algoritmo principal, retornando um determinado valor no seu próprio nome. II. Podem-se inserir módulos em um algoritmo. Para isso, pode-se utilizar "Procedimentos" ou "Funções". As ações das "Funções" e dos "Procedimentos" são hierarquicamente subordinadas a um módulo principal. III. Cada "Função" ou "Procedimento" pode utilizar constantes ou variáveis do módulo principal ou definir suas próprias constantes ou variáveis. IV. Uma variável global indica o endereço onde um valor é armazenado na memória do computador enquanto um ponteiro representa um valor numérico real. Indique a opção que contenha todas as afirmações verdadeiras. a) I e II. b) II e III. c) III e IV. d) I e III. e) II e IV. (CESPE/2009/ANAC/Analista Administrativo/Tecnologia da Informação). Na passagem de parâmetro por valor, o parâmetro formal tem seu valor inicializado pelo valor do parâmetro real. Por esse motivo, o parâmetro real nunca é alterado. O seu valor se mantém inalterado depois que o subprograma termina a execução. (CESPE/2009/ANAC/Analista Administrativo/Tecnologia da Informação). Na passagem de parâmetro por valor, o parâmetro formal tem seu valor inicializado pelo valor do parâmetro real. Por esse motivo, o parâmetro real nunca é alterado. O seu valor se mantém inalterado depois que o subprograma termina a execução. GABARITO: item CERTO. (FUMARC/2007/MINISTÉRIO PÚBLICO/Análise de Sistemas) Em relação a algoritmos e lógica de programação, todas as afirmativas estão corretas, EXCETO: a) Funções e sub-rotinas (procedimentos) são ferramentas de modularização de programas. b) Os comandos de entrada e saída são utilizados para iniciar e finalizar a execução de um programa de computador. c) Estruturas condicionais permitem escolher ações que serão executadas quando determinadas condições são satisfeitas. d) Estruturas de repetição permitem que uma sequência de comandos seja executada repetidamente até que uma determinada condição de interrupção seja satisfeita. (FUMARC/2007/MINISTÉRIO PÚBLICO/Análise de Sistemas) Em relação a algoritmos e lógica de programação, todas as afirmativas estão corretas, EXCETO: a) Funções e sub-rotinas (procedimentos) são ferramentas de modularização de programas. b) Os comandos de entrada e saída são utilizados para iniciar e finalizar a execução de um programa de computador. c) Estruturas condicionais permitem escolher ações que serão executadas quando determinadas condições são satisfeitas. d) Estruturas de repetição permitem que uma sequência de comandos seja executada repetidamente até que uma determinada condição de interrupção seja satisfeita. Interpretador de Algoritmos ◦ Interpreta o portugol diretamente ◦ Claro, precisou de mais formalismo ◦ Melhor ferramenta para aprender algoritmos Outras ferramentas boas para aprender ◦ Linguagem Pascal (especialmente o Turbo Pascal 4) ◦ Linguagem C – um pouco mais difícil de aprender ◦ Linguagem Declarativa – Prolog ◦ Linguagem Funcional – LISP, Gofer http://www.apoioinformatica.inf.br/o-visualg Estrutura do VisuALG “Algoritmo 1” Converter reais em dólar Prof Lênin 2013 Declaração das variáveis Ex: Qtd_reais : real Cotacao : real Linhas de Comandos: Ex: Escreva Escreval Leia Esqueleto Terminal secundário A Barra de Tarefas ◦ Contém os comandos mais utilizados no VisuAlg (estes comandos também podem ser acessados pelo menu ou por atalhos no teclado). Executar (F9): Inicia (ou continua) a execução automática do pseudocódigo. Executar com timer (Shift-F9):: Insere um atraso (que pode ser especificado no intervalo ao lado) antes da execução de cada linha. Também realça em fundo azul o comando que está sendo executado, da mesma forma que na execução passo a passo. Intervalo do timer: Atraso em cada linha, para quando se deseja executar o pseudocódigo com timer. Passo (F8): Inicia (ou continua) a execução linha por linha do pseudocódigo Parar (Ctrl-F2): Termina imediatamente a execução do pseudocódigo. Liga/desliga breakpoint (F5): Insere/remove um ponto de parada na linha em que esteja o cursor. NOME DO ALGORITMO VAR declaração de variáveis . . . INICIO DO ALGORITMO bloco de comandos . . . FIM DO ALGORITMO algoritmo "soma dois numeros" var n1, n2, d: inteiro inicio escreval("Digite dois numeros")
Compartilhar