Baixe o app para aproveitar ainda mais
Prévia do material em texto
Algoritmos e Estrutura de Dados I Parte 1 Conceitos: Lógica: maneira de raciocinar, utilizando a coerência e o bom senso. Lógica de Programação: planejamento de uma solução computadorizada para um determinado problema. Ação: acontecimento que a partir de um estado inicial e após um período de tempo finito, produz um estado final. Algoritmo: Uma descrição de comandos que, se obedecidos, resultam numa sucessão finita de ações, atingindo um objetivo. Ex: guia de preenchimento de imposto de renda instruções para se jogar um jogo uma receita de bolo manual de instalação de um aparelho eletrônico Sua implementação pode ser feita por um computador, por outro tipo de autômato ou mesmo por um ser humano. Diferentes algoritmos podem realizar a mesma tarefa usando um conjunto diferenciado de instruções em mais ou menos tempo, espaço ou esforço do que outros. Exemplo de um algoritmo: Testar lâmpada Algoritmo pegue uma escada posicione a escada embaixo da lâmpada se a escada estiver desarmada arme a escada suba na escada retire a lâmpada teste a lâmpada se a lâmpada estiver queimada coloque um lâmpada nova senão coloque alâmpada atual desça da escada desarme a escada guarde a escada Fim Exercícios Criar um algoritmo para instruir as regras do seguinte jogo: Uma caixa com fichas coloridas deverá ser aberta para que um jogador retire uma ficha sem olhar. Conforme a cor, o jogador recebe uma pontuação em cartas de um baralho: azul: 2 cartas amarela: 3 cartas verde: 4 cartas demais cores: uma carta Algoritmo pegue a caixa abra a caixa retire uma ficha sem olhar se a cor for azul ganhe 2 cartas senão se a cor for amarela ganhe 3 cartas senão se a cor for verde ganhe 4 cartas senão ganhe 1 carta feche a caixa guarde a caixa Fim Padrões de comportamento: Seqüência de ações: rege o fluxo de execução, determinado qual a ação vem a seguir. Uma ação é executada uma após a outra. Ex: desça da escada desarme a escada guarde a escada Condição: as ações são executadas se uma condição estabelecida for verdadeira, senão (a condição é falsa) outras ações são executadas. A estrutura do senão é opcional. Ex: se a lâmpada estiver queimada coloque um lâmpada nova senão coloque a lâmpada atual Um algoritmo pode ser descrito na forma de: Pseudocódigo, ou Português Estruturado ou Portugol: é uma forma genérica de escrever um algoritmo, utilizando uma linguagem simples (nativa a quem o escreve, de forma a ser entendida por qualquer pessoa) sem necessidade de conhecer a sintaxe de nenhuma linguagem de programação. Fluxograma: utilização de diagramas e símbolos que expressam a seqüência do fluxo de execução dos comandos de um algoritmo. Linguagem de Programação: é um conjunto de regras sintáticas e semânticas usadas para definir um programa de computador a partir de um algoritmo compu8tacional. Ex: C, Java, Visual Basic. Programa de computador Um programa de computador é essencialmente um algoritmo que diz ao computador os passos específicos e em que ordem eles devem ser executados. O código de um programa pode ser considerado como: Fonte: é o conjunto de palavras ou símbolos escritos em uma das linguagens de programação existentes, de forma ordenada e de maneira lógica, contendo instruções de um algoritmo. Normalmente, a linguagem de programação é de alto nível, com grande capacidade de abstração Objeto: é o nome dado ao código resultante da compilação do código fonte, que é convertido e escrito em uma linguagem de baixo nível (linguagem de máquina). Executável: é um arquivo de código objeto, que posteriormente é "ligado" aos outros, através de um linker, resultando num arquivo executável ou biblioteca, Este arquivo pode ser executado pelo processador da máquina. Compilador: é um programa que, a partir de um código fonte escrito em uma linguagem de programação, cria um código objeto semanticamente equivalente porém escrito em outra linguagem. O processo de compilação é composto de análise (análise léxica, sintática e semântica) e síntese. A análise tem como objetivo entender o código fonte e representá- lo em uma estrutura intermediária. A síntese constrói o código objeto a partir desta representação intermediária. Classicamente, um compilador traduz um programa de uma linguagem textual facilmente entendida por um ser humano para uma linguagem de máquina, específica para um processador e sistema operacional. A versão compilada do programa tipicamente é armazenada, de forma que o programa pode ser executado um número indefinido de vezes sem que seja necessária nova compilação, o que compensa o tempo gasto na compilação. Isso acontece com linguagens como Pascal e C. Atualmente, porém, são comuns compiladores que geram código para uma máquina virtual que é, depois, interpretada por um interpretador. Interpretador: é um programa que lê um código fonte de uma linguagem de programação e os convertem em código executável à medida que vai executando o programa. Programas interpretados são geralmente mais lentos do que os compilados, mas são também geralmente mais flexíveis, já que podem interagir com o ambiente mais facilmente. Exemplos de linguagens interpretadas: JavaScript, Phyton, PHP. Processamento de um programa Disco: meio físico permanente para armazenagem de arquivos de dados e de programas (fonte, objeto e executável). Memória: meio físico volátil e temporário para onde é carregado um programa do tipo executável e seus dados, quando este necessita ser executado. Processador: processa e executa os comandos de um programa executável que se encontra na memória do computador. Processador Memória Disco Algortimos Computacionais Constante: um dado que não sofre alteração no decorrer do tempo de execução de um algoritmo. Ex: 5, “Hoje”, 'A', 0.35 Variável: um dado que pode ser alterado durante a execução de um algoritmo. São armazenados na memória em locais identificados por um nome, o qual serve de referencia ao acesso ao seu conteúdo. Esses locais são conhecidos como variáveis de memória. Este nome pode ser composto por uma ou mais caracteres, sem espaços, sendo o primeiro uma letra. Ex: Soma, X, Valor10, salarioAtual Soma X Valor10 salarioAtual Declaração de variáveis de memória: VAR: nomeVariável, nomeVariável, .... Ex: VAR: Total, Z, numero Tipo de dados: inteiro Ex: 15, -2 real Ex: 1.73, -8.384 caracter Ex: A a Z, 0 a 9, caracteres especiais lógico: TRUE (verdadeiro), FALSE (falso) Operadores Aritméticos: + soma - subtração * multiplicação / divisão (obtém o quociente) mod divisão (obtém o resto ) Comando de Atribuição ( = ou ← ) permite armazenar dados em variáveis de memória. Pode-se armazenar: constantes: Ex: A = 3 (ou A ← 3) armazena o valor 3 na variável A B = 'A' (ou B ← ‘A’) armazena o caracter A na variável B conteúdos de outras variáveis: Ex: C = A (ou C ← A) armazena o conteúdo da variável A na variável C resultados de expressões numéricas: Ex: D = A + 4 (ou D ← A + 4) armazena o resultado da soma do conteúdo da variável A com o valor 4,na variável D A B C D 3 A 3 7 Estruturas de Controle Fornecem uma estrutura à execução de um algoritmo, podendo ser combinadas. Tipos: Seqüencial, Condicional e Repetitiva. Estrutura Seqüencial Expressa uma seqüência única de comandos de um algoritmo a serem executados na ordem em que aparecem. Exemplo: Algoritmo VAR: X, Y, Total X = 5 Y = 8 Total = X + Y Fim Utilizando um fluxograma Exercícios 1 - Determinar os conteúdos das variáveis de memória para a execução deste algoritmo: Algoritmo VAR: A, B, C, D, E, F A = 3 B = 14 C = B – A C = C + 1 D = B – C E = 2 + A * D Processador Memória X Y Total 5 8 13 A = E C = C – A F = 'X' D = D – E Fim A B C D E F 3 8 14 11 12 4 2 -6 8 X Este tipo de raciocínio em um algoritmo computacional é chamado de Teste de Mesa, o qual permite a simulação da execução do algoritmo. 2 - Determinar os conteúdos das variáveis de memória para a execução deste algoritmo: Algoritmo VAR: X, Y, Z, W, P, Q X = 20 Y = 10 Z = 45 W = Z - X * 2 P = Y + W W = W + 2 X = P + 1 Q = Z - P P = P - 1 Y = Q Q = X Fim Obs: A execução dos algoritmos anteriores no computador não permite que se possam visualizar os conteúdos das variáveis de memória, pois o processamento ocorre apenas entre o processador e a memória do computador. Outro fato, é que a cada execução destes algoritmos os valores armazenados nas variáveis de memória serão sempre os mesmos, pois as variáveis são sempre inicializadas com os mesmos valores. Para se obter outros conteúdos, seria necessária a alteração do código fonte. Entrada e Saída de Dados Este recurso permite que se possa entrar com valores novos durante a execução do algoritmo e visualizar valores processados. Comando de saída: Escrever Envia ou “escreve” uma informação numa saída específica. Ex: vídeo. Declaração: Escrever informação onde, informação pode ser: uma constante. Ex: Escrever 8 envia o valor 8 Escrever “valor inválido” envia o texto conteúdo de variáveis de memória. Ex: Escrever “A soma é “ S envia o texto e o conteúdo da variável S resultados de expressões aritméticas. Ex: Escrever “Resultado: “ A * B / 2 envia o texto e o resultado da expressão Comando de entrada: Ler Recebe ou “lê” um dado de entrada específica (ex: teclado) e o armazena numa variável de memória. Declaração: Ler nomeVariável Ex: Escrever “Digite uma letra” envia o texto Ler M recebe por digitação um caracter e o armazena na variável M Exemplo: Algoritmo VAR: X, Y, Total Escrever “Digite um número” envia o texto Ler X recebe por digitação um número e o armazena na variável X Escrever “Digite outro número” envia o texto Ler Y Total = X + Y Escrever “A soma é “ Total envia o texto e o conteúdo da var. Total Fim Utilizando um fluxograma: Exercícios 1 – Seja o seguinte algoritmo a seguir. Realize testes de mesa para os valores de entrada sugeridos relacionando os valores a serem armazenados nas variáveis de memória, durante a sua execução. Algoritmo VAR: A, B, C, X, Z, W Escrever “Digite um número” Ler A Escrever “Digite um outro número” Ler B Escrever “Digite um outro número” Ler C X = A + B Z = X – C Z = Z * 2 W = Z - X Escrever “Valor Final de X “ X Escrever “Valor Final de Z “ Z Escrever “Valor Final de W “ W Fim Valores para os testes de mesa: a) A = 6 b)A = 10 B = 3 B = 4 C = 2 C = 11 2 - Criar um algoritmo para o seguinte problema: Receber por digitação dois números e visualizar os resultados da soma e da subtração dos dois números. 3 - Criar um algoritmo para o seguinte problema: Receber por digitação dois números e visualizar os resultados da soma, da subtração, da multiplicação e da divisão, dos dois números. 4 - Criar um algoritmo para o seguinte problema: Receber por digitação o valor do raio de um círculo. Calcular e visualizar a área desse círculo. A formula da Área é : Π R2, onde o valor de Π (pi) é 3,1419 5 – Criar um algoritmo para o seguinte problema: Receber por digitação os valores dos dois lados de um retângulo. Calcular e visualizar a área e o perímetro do retângulo. Área: ladoMenor * ladoMaior Perímetro: soma dos quatros lados 6 - Criar um algoritmo para o seguinte problema: Receber por digitação as medidas da altura, largura e comprimento das paredes de uma cozinha. Uma vez que deseja-se azulejar as quatro paredes da mesma, calcular e informar, visualizando, quantas caixas de azulejos serão necessárias, sabendo-se que a caixa de azulejos escolhida contém 1,8m2 de azulejos. 7 – Criar um algoritmo para o seguinte problema: Receber por digitação o salário atual de um funcionário, calcular e visualizar o salário novo, considerando-se um aumento cujo valor deverá ser recebido também por digitação. 8- Criar um algoritmo para o seguinte problema: Receber dois números por digitação em duas variáveis A e B. Efetuar a troca dos valores das variáveis de forma que o valor da variável A passe para a B e o da variável B, passe para a variável A. Visualizar os valores das duas variáveis antes e depois da troca. Parte 2 Estrutura Condicional ou de Seleção Avalia se uma condição associada a cláusula SE, é verdadeira ou falsa, para determinar quais comandos deverão ser executados. Condição: é a comparação de dois valores que podem ser constantes, conteúdos de variáveis de memória, resultado de expressões aritméticas ou retorno de funções, por meio do uso de operadores relacionais. Operadores Relacionais: = igual < > diferente < menor < = menor ou igual > maior > = maior ou igual Uma estrutura condicional pode ser simples ou composta: Estrutura Simples: uma condição é avaliada e, se a condição for verdadeira, um conjunto ou bloco de um ou mais comandos são executados. Se a condição for falsa, nenhum bloco de comandos é indicado e a execução continua fora da estrutura Declaração da estrutura: SE condição Bloco com um ou mais comandos ou estruturas FIM SE Obs: A cláusula FIM SE indica o fim da estrutura condicional. Ex: SE A = B ESCREVER “Os valores das duas variáveis são iguais” FIM SE Obs: se o conteúdo das variáveis de memória A e B são iguais, o comando escrever executado. Caso contrário, o programa segue normalmente fora da estrutura. Estrutura Composta: uma condição é avaliada e, se a condição for verdadeira, um conjunto ou bloco de um ou mais comandos são executados. Se a condição for falsa, um conjunto ou bloco de comandos de um ou mais comandos são executados. Após o término da execução de um dos blocos, a execução continua fora da estrutura Declaração da estrutura: SE condição Bloco com um ou mais comandos ou estruturas SENÃO Bloco com um ou mais comandos ou estruturas FIM SE A cláusula SENÃO indica a negação da condição da cláusula SE. A cláusula FIM SE indica o fim da estrutura condicional. Ex: SE A = B ESCREVER “Os valores das duas variáveis são iguais” SENÃO ESCREVER “Os valores das duas variáveis são diferentes” FIM SE Obs:se o conteúdo das variáveis de memória A e B são iguais, o comando escrever do primeiro bloco é executado. Senão, o comando escrever do segundo bloco é executado. Nunca os dois blocos serão executados seqüencialmente. Após a execução de um deles, o programa segue normalmente fora da estrutura. Utilizando um fluxograma, os dois tipos de estruturas condicionais podem ser expressos da seguinte forma: Dentro de qualquer um dos blocos de comandos podem existir outras estruturas condicionais. Sempre que numa cláusula SENÃO for necessária uma condição a ser avaliada, deve existir um SE associada à condição. Exemplo: SE condição SE condição Bloco com um ou mais comandos ou estruturas SENÃO Bloco com um ou mais comandos ou estruturas FIM SE SENÃO Bloco com um ou mais comandos ou estruturas FIM SE Exemplo: SE condição Bloco com um ou mais comandos ou estruturas SENÃO SE condição Bloco com um ou mais comandos ou estruturas SENÃO Bloco com um ou mais comandos ou estruturas FIM SE FIM SE Esta última forma também pode ser expressa na forma SENÃO SE, onde apenas um único FIM SE é necessário ao final. Exemplo: SE condição Bloco com um ou mais comandos ou estruturas SENÃO SE condição Bloco com um ou mais comandos ou estruturas SENÃO SE condição Bloco com um ou mais comandos ou estruturas - - - - - - SENÃO Bloco com um ou mais comandos ou estruturas FIM SE Outros exemplos com utilização de fluxogramas: Exemplo 1: Exemplo 2: Exemplo de algoritmo: Receber por digitação dois números inteiros e um operador aritmético (+ ou -). Realizar a operação desejada e visualizar o resultado. 1ª versão: Algoritmo VAR: N1, N2,Result, Oper Escrever “Digite um número” Ler N1 Escrever “Digite um outro número” Ler N2 Escrever “Digite um operador aritmético (+ -)” Ler Oper SE Oper = '+' Result = N1 + N2 Escrever “Resultado da soma: “ Result SENÃO SE Oper = '-' Result = N1 – N2 Escrever “Resultado da subtração: “ Result SENÃO Escrever “Operador aritmético inválido“ FIM SE Fim 2ª versão: Algoritmo VAR: N1, N2, Oper Escrever “Digite um número” Ler N1 Escrever “Digite um outro número” Ler N2 Escrever “Digite um operador aritmético (+ -)” Ler Oper SE Oper = '+' Escrever “Resultado da soma: “ N1 + N2 SENÃO SE Oper = '-' Escrever “Resultado da subtração: “ N1 – N2 SENÃO Escrever “Operador aritmético inválido“ FIM SE Fim Obs: na primeira versão, foi utilizada a variável Result para receber o resultado da operação aritmética escolhida por digitação, sendo em seguida visualizado o seu conteúdo. Na segunda versão, não foi utilizada essa variável, sendo o cálculo da operação realizado no comando de escrita. Exercícios 1 – Implementar no exemplo anterior as operações de multiplicação ( * ) e da divisão ( / ). No caso da divisão, não executar a mesma se o segundo valor (divisor) for zero, fornecendo uma mensagem. 2 – Receber por digitação um número, determinar e informar se o mesmo é: Múltiplo de 2 Múltiplo de 3 Múltiplo de 4 Múltiplo de 5 Expressões condicionais Uma estrutura condicional pode conter na sua parte condição uma expressão condicional composta por mais de uma condição. Nesse caso, utilizam-se os operadores lógicos entre elas, os quais definem como as relações entre as condições são conectadas. Os operadores lógicos são: NÃO, E , OU. Durante a execução do programa, o processador avalia cada condição da expressão condicional determinando se são verdadeiras ou falsas e, em seguida, utiliza os operadores lógicos aplicando a Tabela Verdade a seguir, para determinar o resultado final da expressão (V ou F). Tabela Verdade Dada duas condições quaisquer e seus respectivos resultados avaliativos (V ou F), o relacionamento entre eles, utilizando-se os operadores lógicos E e OU, será: 1ª condição 2ª condição E OU V V V V V F F V F V F V F F F F Quando se utiliza o operador lógico E, somente será verdadeira a avaliação se as duas condições forem verdadeiras. Quando se utiliza o operador lógico OU, somente será falsa a avaliação se as duas condições forem falsas. O operador relacional NÃO é utilizado para inverter ou negar a avaliação de uma condição. Numa avaliação com operadores E e OU, o processador realiza primeiro o operador lógico E e depois o operador lógico OU. Caso seja necessário começar pelo operador OU, deve-se colocar a condição entre parênteses. Ex: B > 3 E (A <= X OU D = A + 3) Exemplo: Dados três valores inteiros diferentes recebidos por digitação, informar qual é o maior valor . Algoritmo VAR: A, B, C Escrever “Digite um número” Ler A Escrever “Digite um outro número” Ler B Escrever “Digite um outro número” Ler C SE A > B E A > C verifica se o conteúdo de A é o maior Escrever “O maior valor é “ A SENÃO SE B > A E B > C verifica se o conteúdo de B é o maior Escrever “O maior valor é “ B SENÃO Escrever “O maior valor é “ C FIM SE Fim Exercícios (continuação) 3 - Dada as seguinte variáveis e seus conteúdos no momento em que cada uma das expressões condicionais a seguir serão testadas, determinar o resultado final de cada uma, aplicando a Tabela Verdade. condição NÃO V F F V Variáveis A = 5 B = 8 C = 10 D = 15 a) SE A = B E C > 4 F E V → F b) SE C < D OU A >= B V OU F → V c) SE B < C E A < D-10 OU A+3 = B V E F OU V F OU V → V d) SE NÃO ( A = D / 3 OU C < = 9) NÃO( V OU F ) NÃO( V ) → F 4- Idem para: Variáveis A = 3 B = 6 X = 11 Y = 13 a) SE A = B -3 E Y + 2 < X OU B < Y b) SE Y + 1 >= A + X OU X MOD 3 < 1 E Y – 9 > B c) SE X + Y <= 20 OU A – B > X OU X * 2 > B + 5 d)SE A – B <= Y – X E ( B * 3 >= X + 7 OU Y – A >= X ) 5 – Receber por digitação o valor do salário atual de um funcionário. Calcular e visualizar o salário novo deste funcionário sabendo-se que o valor do acréscimo é baseado na tabela a seguir: Salário Atual % acréscimo < 1500,00 10 entre 1500,00 e 4000,00 8 4000,00 5 6 – Receber por digitação as medidas dos três lados de um triângulo. Determinar e informar: • O perímetro do triângulo • O tipo do triângulo: - eqüilátero: três lados iguais - isósceles: dois lados iguais - escaleno: três lados diferentes Obs: antes de determinar os cálculos, verificar se os valores dos lados formam um triângulo: a soma de dois lados deve ser maior que o valor do outro lado. 7- Receber por digitação o código da função e o salário atual de um funcionário. Calcular e informar o novo salário, sabendo-se que: Código da função Salário atual acrescimo 50 ou 51 -------- 10% 55 <= 3000 8% > 3000 7% demais códigos < 1000 12% entre 1000 e 5000 11% > 5000 8%Exemplo de Teste de Mesa Considerando-se o algoritmo a seguir, realizar testes de mesa determinando os valores parciais das variáveis para os valores de entrada das seguintes execuções: Algoritmo var: V1, V2, V3, T, RES, X, VAL escrever “Digite um numero:” ler V1 escrever “Digite outro numero:” ler V2 escrever “Digite outro numero:” ler V3 T = V1 + V2 + V3 X = 1 se T < 15 RES = T – V1 X = 3 senão se T >= 15 E T <= 25 RES = T – V2 + 1 X = 5 senão RES = T – V3 fim se VAL = T – RES + X T = T + VAL escrever “Valor : ” VAL escrever “Total : ” T Fim a) V1 = 5 V2 = 3 V3 = 5 b) V1 = 10 V2 = 9 V3 = 7 c) V1 = 8 V2 = 4 V3 = 6 Exercício Considerando-se o algoritmo a seguir, realizar testes de mesa determinando os valores parciais das variáveis para os valores de entrada das seguintes execuções: Algoritmo var: n1, n2, x, y escrever “Digite um numero:” ler n1 escrever “Digite outro numero:” ler n2 x = 4 y = 10 se n1 > n2 x = x + n1 senão y = y + n2 fim se x = x + 1 y = y + 2 se x >= y x = x + 5 senão x = x + y fim se escrever “Valor de X: ” x escrever “Valor de Y: ” y Fim a) n1 = 7 n2 = 2 b) n1 = 3 n2 = 8 V1 V2 V3 T RES X VAL 5 3 5 13 8 1 8 21 3 V1 V2 V3 T RES X VAL 10 9 7 26 19 1 8 34 V1 V2 V3 T RES X VAL 8 4 6 18 15 1 8 26 5 Parte 3 Variáveis Acumuladoras São variáveis que sofrem acumulação positiva ou negativa de um valor no seu conteúdo atua l. Devem ser inicializadas com um valor para que da primeira acumulação, o seu conteúdo tenha um valor real e não sujeira de memória. Algumas linguagens de programação inicializam com zero uma variável numérica no momento da sua declaração. Ex: A = A + 2 //somar 2 ao conteúdo da variável A e armazenar o resultado em A X = X - Y //subtrair o conteúdo de Y do conteúdo da variável X e armazenar o resultado na variável X Estrutura Repetitiva Permite que um bloco ou conjunto de comandos ou estruturas sejam repetidas enquanto a condição indicada for verdadeira. Declaração: REPITA ENQUANTO condição Bloco com um ou mais comandos ou estruturas FIM REPITA onde, condição é a comparação de dois valores que podem ser constantes, conteúdos de variáveis de memória, resultado de expressões aritméticas ou retorno de funções, por meio do uso de operadores relacionais. Aqui pode ser utilizado uma expressão condicional com mais de uma condição relacionada com os operadores E e OU. Se a condição for verdadeira o bloco de comandos será executado. Ao ser encontrado a cláusula FIM REPITA, a execução do algoritmo retorna ao início da estrutura para uma nova avaliação da condição. Quando a condição for falsa, o bloco não é executado e a execução do programa continua a partir do próximo comando após o término da estrutura. Tipos de repetições: - Indefinida: quando não se sabe a quantidade de vezes que o bloco da estrutura será executado. A cada execução a quantidade pode variar. Ex: Receber por digitação uma certa quantidade de números, enquanto o usuário desejar digitar números. Somá-los e visualizar o resultado da soma ao final. Algoritmo VAR: num, soma, continua //declaração das variáveis soma = 0 //inicializa soma com o valor 0 continua = ‘S’ //inicializa continua com ‘S’ REPITA ENQUANTO continua=‘S’ //se verdadeira executa o bloco Escrever “Digite um número” //envia um texto Ler num //armazena o valor digitado em num soma = soma + num //acumula o conteúdo de num em soma Escrever “Deseja continuar S/N” //envia um texto Ler continua //armazena o valor digitado em continua FIM REPITA //retorna ao inicio da estrutura Escrever “A soma dos números é “ soma //envia o texto e conteúdo de soma Fim Em fluxograma: A variável continua é utilizada na condição da estrutura para determinar se o bloco será executado ou não. - Definida: quando se estabelece a quantidade de vezes que o bloco da estrutura será executado. A cada execução a quantidade de vezes é sempre a mesma. Ex: Receber por digitação 5 números, somá-los e visualizar o resultado da soma ao final. Algoritmo VAR: num, soma, cont //declaração das variáveis soma = 0 //inicializa soma com o valor 0 cont = 0 //inicializa cont com 0 REPITA ENQUANTO cont < 5 //se verdadeira executa o bloco Escrever “Digite um número” //envia um texto Ler num //armazena o valor digitado em num soma = soma + num //acumula o conteúdo de num em soma cont = cont + 1 //acumula 1 em cont FIM REPITA //retorna ao inicio da estrutura Escrever “A soma dos números é “ soma //envia o texto e conteúdo de soma Fim Em fluxograma: Foi utilizada a variável cont na condição da estrutura, como sendo uma variável contadora do número de vezes que o bloco de comandos será executado. Exemplo da otimização de um algoritmo ao utilizar uma estrutura de repetição Visualizar os números de 1 a 500 no vídeo. 1ª versão: sem estrutura de repetição Algoritmo Escrever “Números de 1 a 500” //envia um texto Escrever 1 //envia o número 1 para o vídeo Escrever 2 //envia o número 2 para o vídeo Escrever 3 //envia o número 3 para o vídeo ---- ---- Escrever 499 //envia o número 499 para o vídeo Escrever 500 //envia o número 500 para o vídeo Fim Obs: será necessário introduzir no algoritmo 500 comandos de escrever um número. Se o algoritmo for alterado para a visualização de 1000 números será necessário adicionar-se mais 500 comandos desse tipo. 2ª versão: com estrutura de repetição Algoritmo VAR: num //declaração da variável num = 1 //inicializa num com o valor 1 Escrever “Números de 1 a 500” //envia um texto REPITA ENQUANTO num <= 500 //se verdadeira executa o bloco Escrever num //envia o número para o vídeo num = num + 1 //acumula 1 em num FIM REPITA //retorna ao inicio da estrutura Fim Obs: para o uso da estrutura será necessário a criação da variável num, que após ser inicializada com 1, tem o seu valor adicionado de 1 toda vez que o seu conteúdo for visualizado. A variável num é utilizada na condição para se determinar a quantidade de vezes que o bloco será repetido. Se o algoritmo for alterado para a visualização de 1000 números será necessário apenas a alteração da condição, que ficaria: num <= 1000. Exercícios 1 – Visualizar os números de 1 a 500, com exceção dos números múltiplos de 3. 2 – Visualizar os números de 1 a 500 na ordem inversa. 3 – Visualizar os números de 1 até um número recebido por digitação. 4 – Escrever os números em ordem crescente ou decrescente, entre dois números digitados inclusive, de acordocoma a ordem dos valores destes. Exemplo Uma pesquisa de mercado entrevistou 100 pessoas para saber a preferência pelos produtos A, B e C. Receber por digitação as preferências dessas pessoas e visualizar ao final a quantidade de preferências de cada tipo de produto. Algoritmo VAR: prod, cont, totA, totB, TotC //declaração das variáveis cont = 0 //inicializa cont com o valor 0 totA = 0 //inicializa totA com o valor 0 totB = 0 //inicializa totB com o valor 0 totC = 0 //inicializa totC com o valor 0 REPITA ENQUANTO cont < 100 //se verdadeira executa o bloco Escrever “Digite o produto “ //envia o texto Ler prod //armazena o produto digitado em prod SE prod = 'A' OU prod = 'a' totA = totA + 1 //acumula 1 na variável totA SENÃO SE prod = 'B' OU prod = 'b' totB = totB + 1 //acumula 1 na variável totB SENÃO SE prod = 'C' OU prod = 'c' totC = totC + 1 //acumula 1 na variável totC FIM SE cont = cont + 1 //acumula 1 em cont FIM REPITA //retorna ao inicio da estrutura Escrever “Qtde de produtos A: “ totA //envia o texto e conteúdo de totA Escrever “Qtde de produtos B: “ totB //envia o texto e conteúdo de totB Escrever “Qtde de produtos C: “ totC //envia o texto e conteúdo de totC Fim Exercícios 5 – Receber por digitação de cada aluno de uma turma de 1º grau com 30 alunos, as seguinte informações: • sexo (M, F) • idade • série Determinar e informar ao final: • Quantidade de meninas com 10 anos que estão na 3ª série. • Quantidade de meninos entre 10 e 13 anos que estão na 6ª série • Quantidade de alunos entre 9 e 12 anos que cursam a 4ª ou 5ª série 6 – Receber por digitação 30 números inteiros. Determinar e informar quantos números existem em cada uma das seguintes faixas: Faixa Valor 1 0 – 30 2 31 – 60 3 61 – 90 4 > 90 7 – Para uma certa quantidade de vendas de uma loja, cuja quantidade será recebida por digitação, receber os seguintes dados de cada uma das vendas: • tipo de venda (P – à prazo, V – à vista) • valor da venda Calcular e informar: • Total das vendas à prazo • Total das vendas à vista • Quantidade de vendas à prazo menores que R$ 500,00 • Quantidade de vendas à vista maiores que R$ 3000,00 8- Receber por digitação para cada uma das 30 crianças de uma escola infantil, o período que esta freqüenta (P – parcial, I – integral) e a quantidade de refeições diárias utilizadas. Apresentar o valor total a ser pago mensalmente, sabendo-se que este deverá se calculado conforme a tabela a seguir: Período Calculo da mensalidade Valor da refeição P - Parcial 1,8 salários mínimos R$ 5,00 I - Integral 3,75 salários mínimos R$ 6,00 O valor total incorpora o valor da mensalidade e o valor das refeições. Receber por digitação o valor do salário mínimo Apresentar ao final a quantidade de crianças que cursam cada um dos períodos Exemplos de Teste de Mesa 1 - Dado o seguinte algoritmo: Algoritmo var: x1, x2, y, k, m, b, c escrever “Digite um numero” ler x1 escrever “Digite outro numero” ler x2 y = 7 k = 0 m = 0 c = 1 repita enquanto y >= x1 k = k + x1 + 1 se k > 7 c = c + 2 senão c = c + 3 fim se b = 1 repita enquanto b < x2 m = m + 2 b = b + 1 c = c + 1 fim repita y = y – 1 fim repita escrever c escrever k escrever m Fim Realizar teste de mesa com os valores abaixo para uma execução: a) x1 = 4 x2 = 4 x1 x2 y k m b c 4 4 7 6 5 4 3 0 5 10 15 20 0 2 4 6 8 10 12 14 16 18 20 22 24 1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4 1 4 5 6 7 9 10 11 12 14 15 16 17 19 20 21 22 b) x1 = 5 x2 = 2 x1 x2 y k m b c 5 2 7 0 0 1 1 6 6 2 2 4 5 12 4 1 5 4 18 6 2 7 1 8 2 10 11 c) x1 = 4 x2 = 1 x1 x2 y k m b c 4 1 7 0 0 1 1 6 5 1 4 5 10 1 6 4 15 1 8 3 20 10 Exercícios de Teste de Mesa 1- Dado o seguinte algoritmo: Algoritmo var: a, b, c, d, e, i, j, tot escrever “ digite um numero” ler a escrever “digite outro numero” ler b escrever “digite outro numero” ler c tot = 0 d = 1 e = 0 i = 1 repita enquanto i < a tot = tot + d + 2 e = e + c j = 1 repita enquanto j < b se e > 8 d = d + e + 1 senão d = d + e fim se j = j + 1 fim repita i = i + 1 fim repita escrever tot escrever d escrever e Fim Realizar teste de mesa com os valores abaixo para uma execução: a) a = 3 b) a = 2 b = 3 b = 2 c = 2 c = 5 2 - Seja o seguinte algoritmo: Algoritmo var: n1, n2, x, y, sub, tot escrever “Digite um numero” ler n1 escrever “Digite outro numero” ler n2 sub = 1 x = 0 tot = 0 repita enquanto n1 > x sub = 1 + x + sub y = 0 repita enquanto n2 > y tot = tot + sub sub = sub + 2 y = y + 1 fim repita se sub > 10 tot = tot + 1 fim se x = x + 1 fim repita escrever tot escrever sub Fim Realizar teste de mesa com os valores abaixo para as execuções: a) n1 = 3 b) n1 = 2 n2 = 2 n2 = 4 3- Seja o seguinte algoritmo: Algoritmo var: v1, v2, v3, x, y, w, z, s escrever “Digite um numero” ler v1 escrever “Digite outro numero” ler v2 escrever “Digite outro numero” ler v3 s = 0 x = 1 z = 0 repita enquanto x < v1 z = z + v1 y = 6 repita enquanto y >= v2 s = s + y – 1 se s > 9 z = z - 2 senão z = z + 2 fim se w = 1 repita enquanto w <= v3 s = s + 1 w = w + 1 fim repita y = y - 1 fim repita x = x + 1 fim repita escrever c escrever k escrever m Fim Realizar teste de mesa com os valores abaixo para as execuções: a) v1 = 3 b) v1 = 2 v2 = 5 v2 = 4 v3 = 2 v3 = 3
Compartilhar