Baixe o app para aproveitar ainda mais
Prévia do material em texto
UniBH 09/09/2014 Algoritmo e Estruturas de Dados 1 Algoritmo e Estruturas de Dados - 02/20141 ALGORITMOS VisuAlg Prof. Ana Gavinho 2 � Algoritmo : definição � Descreve um padrão de comportamento através de um conjunto bem definido e finito de ações (comandos) que irão produzir um resultado desejado (apresenta uma solução para um problema). � É uma seqüência de instruções ordenadas de forma lógica para a resolução de uma determinada tarefa ou problema. � Seqüencia ordenada de passos que deve ser seguida para realizar uma tarefa Algoritmo e Estruturas de Dados - 02/2014 UniBH 09/09/2014 Algoritmo e Estruturas de Dados 2 3 Algoritmo e Estruturas de Dados - 02/2014 Não computacional É um algoritmo cuja seqüência de passos, a princípio, não pode ser executada por um computador. Computacional Para ser executado por um computador, deve ter instruções corretas e sem ambigüidades. Algoritmo 4 Exemplo 1 de Algoritmo Algoritmo e Estruturas de Dados - 02/2014 É computacional? Receita de Omelete � Ingredientes • 4 ovos ou mais • Sal, pimenta do reino • Salsa picada • Óleo ou manteiga Modo de preparo 1) Bata os ovos inteiros até espumarem. 2) Tempere com sal, pimenta e salsa 3) Leve um frigideira ao fogo com óleo e deixe esquentar, derrame os ovos de forma que tome o fundo da frigideira. 4) Deixe fritar em fogo brando. 5) Levante as bordas com o auxílio de uma espátula e vá enrolando até que fique dourado. 6) Retire para uma travessa e sirva bem quente. UniBH 09/09/2014 Algoritmo e Estruturas de Dados 3 5 Exemplo 2 de Algoritmo Algoritmo e Estruturas de Dados - 02/2014 É computacional? algoritmo “Media” var a, b, media : real inicio leia (a, b) media ���� (a+b)/2 escreva (“Media = “, media) fimalgoritmo 6 Algoritmo detalhado Algoritmo e Estruturas de Dados - 02/2014 Algoritmo 1: 1. Colocar um ovo na frigideira 2. Esperar o ovo ficar frito 3. Remover o ovo da frigideira Como fritar um ovo? Algoritmo 2: 1. Colocar a frigideira no fogo 2. Colocar óleo e esperar até o óleo ficar quente 3. Quebrar o ovo separando a casca e colocar o conteúdo do ovo na frigideira 4. Esperar um minuto 5. Retirar o ovo da frigideira UniBH 09/09/2014 Algoritmo e Estruturas de Dados 4 7 Algoritmo: formas de representação � Descrição narrativa � Fluxograma � Pseudocódigo ou linguagem estruturada ou portugol � Obter as notas da primeira e da segunda prova � Calcular a média aritmética das duas notas � Se a média for >= 7 então o aluno foi aprovado, senão (nota < 7) o aluno foi reprovado MEDIA <- (N1+N2)/2 INICIO MEDIA >= 7 “APROVA DO” N1, N2 FIM “REPROVAD O” v F Algoritmo e Estruturas de Dados - 02/2014 8 Algoritmo: descrição narrativa � Exemplo : Cálculo da média de um aluno � Obter as notas da primeira e da segunda prova � Calcular a média aritmética das duas notas � Se a média for >= 7 então o aluno foi aprovado, senão (nota < 7) o aluno foi reprovado Algoritmo e Estruturas de Dados - 02/2014 UniBH 09/09/2014 Algoritmo e Estruturas de Dados 5 9 Algoritmo: fluxograma � Principais formas geométricas OPERACÃO INICIO / FIM DECISÃO SAÍDA DE DADOS ENTRADA DE DADOS A CONECTOR Algoritmo e Estruturas de Dados - 02/2014 10 Algoritmo: fluxograma (cont.) � Exemplo : Cálculo da média de um aluno MEDIA <- (N1+N2)/2 INICIO MEDIA >= 7 “APROVADO”N1, N2 FIM A “REPROVADO” V F A Algoritmo e Estruturas de Dados - 02/2014 UniBH 09/09/2014 Algoritmo e Estruturas de Dados 6 11 Algoritmo: pseudocódigo � Pseudocódigo ou linguagem estruturada ou portugol � Muito semelhante a forma em que os programas são escritos � Possui definição dos tipos de variáveis usadas no algoritmo � Permite a tradução de um algoritmo para uma linguagem de programação específica de forma praticamente direta � Neste curso, vamos usar a linguagem estruturada VisuAlg Algoritmo e Estruturas de Dados - 02/2014 12 Algoritmo Algoritmo e Estruturas de Dados - 02/2014 1) Por que um algoritmo não pode tem um comando como “Escreva todos os números pares”? 2) Escreva um algoritmo que produza os valores: 2 4 6 8 10 3) Escreva um algoritmo que produza os valores: 1 3 5 7 9 UniBH 09/09/2014 Algoritmo e Estruturas de Dados 7 13 VisuAlg � O corpo do programa usa um bloco de comandos para escrever o algoritmo em VisuAlg algoritmo "semnome" // comentário var <declaração de variáveis> CORPO DO PROGRAMA inicio < comandos > fimalgoritmo � comentários são usados para documentar programas. � as variáveis são opcionais. Um programa pode não ter variáveis. � o bloco de comandos tem pelo menos um comando. Algoritmo e Estruturas de Dados - 02/2014 14 Declaração de variáveis <identificadores> : tipo Exemplo: algoritmo “DeclaraVariaveis" var indice, a, b : inteiro nome, sobrenome: caractere tem : logico inicio < comandos > fimalgoritmo Começam com letra ! valores verdadeiro ou falsológico conjunto de caracteres alfanuméricoscaracter número real positivo, nulo ou negativoreal número inteiro positivo, nulo ou negativointeiro Algoritmo e Estruturas de Dados - 02/2014 UniBH 09/09/2014 Algoritmo e Estruturas de Dados 8 Algoritmo e Estruturas e Dados - 02/201415 Que tipos de dados seriam usados para cada informação pessoal deste cadastro? 16 Estes nomes de identificadores são validos? Por que? Algoritmo e Estruturas de Dados - 02/2014 • “nota1” • salario-liquido • salarioliquido • SalarioLiquido • a1b2c3 • km/h • #produto • leia • nota1 • nota1+nota2 • matricula • 1nota • X2 • @gmail.com • nota(1) • a:b UniBH 09/09/2014 Algoritmo e Estruturas de Dados 9 17 Crie uma variável (nome e tipo) para cada informação pessoal deste cadastro. Algoritmo e Estruturas de Dados - 02/2014 18 Comandos de atribuição <identificador> ���� <expressão> � expressão: pode ser um valor, um identificador ou uma expressão aritmética ou lógica Algoritmo e Estruturas de Dados - 02/2014 UniBH 09/09/2014 Algoritmo e Estruturas de Dados 10 19 Comandos de atribuição Exemplo: algoritmo “Atribuicao" var a, b, c, delta : real nome, sobrenome : caractere tem, amaior : logico inicio a ���� 1 // recebe um valor b ���� 2 // recebe um valor c ���� a // recebe o conteúdo de um identificador delta ���� b^2 – 4*a*c // recebe o valor da expressão aritmética nome ���� “Jose” // recebe um valor sobrenome ���� “Silva” // recebe um valor tem ���� falso // recebe um valor amaior ���� (a>b) // recebe o valor da expressão lógica fimalgoritmo Algoritmo e Estruturas de Dados - 02/2014 20 Comandos de atribuição (cont.) � operadores aritméticos sobre inteiros e reais: + soma - subtração * multiplicação ^ potenciação ex: 10 + 30 resultado: 40 ex: 30 - 20 resultado: 10 ex: 20 * 4,2 resultado: 84.0 ex: 4,5**2 resultado: 20,25 Algoritmo e Estruturas de Dados - 02/2014 ex: “Porto” + “Seguro” resultado: “PortoSeguro” � operadores de caracteres + UniBH 09/09/2014 Algoritmo e Estruturas de Dados 11 21 Comandos de atribuição (cont.) ex: 11 div 2 resultado: 5 ex: 11 mod 2 resultado: 1 � operadores aritméticos sobre inteiros: \ - divisão inteira MOD ou % - resto da divisão ex: 11.0 / 2.0 resultado: 5.5 � operadores aritméticos sobre reais / - divisão real Algoritmo e Estruturas de Dados - 02/201422 Quais comando de atribuição estão corretos? Algoritmo e Estruturas de Dados - 02/2014 var indice, a, b : inteiro nome, primeironome, sobrenome: caractere tem : logico a � 1 a � verdadeiro b � “2” b � 2 indice � a + b indice � nome + sobrenome indice � indice +1 primeironome � “Jose” sobrenome � “Silva” nome � primeironome + sobrenome nome � indice tem � falso tem � a tem � (a>b) UniBH 09/09/2014 Algoritmo e Estruturas de Dados 12 23 Comandos de entrada e saida Saída: escreva (<expressão>) ou escreval (<expressão>) � expressão: pode ser um identificador, uma string ou uma expressão aritmética Entrada: leia (<identificadores>) � variáveis já declaradas no corpo do programa Algoritmo e Estruturas de Dados - 02/2014 24 Calcule a média aritmética entre dois números Exemplo1: algoritmo “Media” var a, b, media : real inicio leia (a, b) media ���� (a+b)/2 escreva (“Media = “, media) fimalgoritmo Exemplo2: algoritmo “Media2num” var a, b : real inicio leia (a, b) escreva (“ A media entre “, a, ” e ”, b, ” é igual a ”, (a+b)/2) fimalgoritmo Algoritmo e Estruturas de Dados - 02/2014 UniBH 09/09/2014 Algoritmo e Estruturas de Dados 13 25 Exercícios: 1) Calcule a média aritmética entre 3 números. 2) Um aluno ficou para a prova final porque a média entre as notas de suas 2 provas foi menor que 7. Ele fez a prova final e teve uma nova média – a média final - calculada a partir da média aritmética entre os valores da prova final e da antiga média. Leia a nota das três provas e calcule sua média final. Algoritmo e Estruturas de Dados - 02/2014 26 Comandos de estrutura de decisão � condição usa operadores lógicos e relacionais Simples: se <condição> então <comandos> fimse Composta: se <condição> então <comandos> senão <comandos> fimse Algoritmo e Estruturas de Dados - 02/2014 UniBH 09/09/2014 Algoritmo e Estruturas de Dados 14 e retorna V se as partes forem verdadeiras. ou retorna V se uma das partes for verdadeira, ou ambas. não inverte de V para F e vice-versa 27 � operadores lógicos: > maior que >= maior ou igual < menor que <= menor ou igual = Igual <> diferente �operadores relacionais: Algoritmo e Estruturas de Dados - 02/2014 28 Exemplo1: Leia um número e diga se ele é positivo ou não algoritmo “Positivo” var a : real inicio leia (a) se (a > 0) entao escreva (a, “ é positivo“) senao escreva (a, “ não é positivo“) fimse fimalgoritmo Algoritmo e Estruturas de Dados - 02/2014 UniBH 09/09/2014 Algoritmo e Estruturas de Dados 15 29 Exemplo2: Leia dois números e diga se eles são + ou - Algoritmo “Comparação” var a, b : real inicio leia (a, b) se (a>0) e (b>0) entao escreva (“Ambos +”) senao se (a<0) e (b<0) entao escreva(“Ambos -”) senao escreva(“Um é + e outro -”) fimse fimse fim Algoritmo e Estruturas de Dados - 02/2014 x y x E y x OU y NÃO x V V V F F V F F 30 Complete o quando abaixo Algoritmo e Estruturas de Dados - 02/2014 UniBH 09/09/2014 Algoritmo e Estruturas de Dados 16 x y z x E y E z x E y OU z x OU y E z x OU y OU z V V V V V F V F V V F F F V V F V F F F V F F F 31 Complete o quando abaixo Algoritmo e Estruturas de Dados - 02/2014 32 Qual o valor (V ou F) de cada expressão lógica abaixo? a = 5 b = 10 . a < b . (a+b) < 15 . (a+b) < (b-a) . a <= b . (a+b) <= 15 . (a+b) <= (b-a) . b >= a . (a+b) >= 15 . (a+b) >= (b-a) . a = b . (a+b) = 15 . (a+b) = (b-a) . a <> b . (a+b) <> 15 . (a+b) <> (b-a) Algoritmo e Estruturas de Dados - 02/2014 UniBH 09/09/2014 Algoritmo e Estruturas de Dados 17 33 Qual o valor (V ou F) de cada expressão lógica abaixo? a = 5 b = 10 . (a < b) E ((a+b) < 15) E ((a+b) < (b-a)) . (a < b) OU ((a+b) < 15) OU ((a+b) < (b-a)) . (a < b) E ((a+b) < 15) OU ((a+b) < (b-a)) . (a < b) OU ((a+b) < 15) E ((a+b) < (b-a)) . (a <= b) E ((a+b) <= 15) OU ((a+b) <= (b-a)) . (b >= a) OU ((a+b) >= 15) E ((a+b) >= (b-a)) . (a = b ) OU ((a+b) = 15) OU ((a+b) = (b-a)) Algoritmo e Estruturas de Dados - 02/2014 34 Exercícios 1. Leia 2 números e diga qual o maior, qual o menor ou se eles são iguais. 2. Leia 3 números e diga qual o maior e qual o menor deles. 3. Leia n números e diga qual o maior e qual o menor deles (veremos isto na semana que vem). 4. Leia um numero N e diga se ele é par ou não. 5. Na lanchonete da faculdade, você comprou algumas garrafas de água mineral. Leia o preço da garrafa, a quantidade comprada e calcule o valor total. Leia o valor pago em dinheiro e calcule o troco. 6. Leia os números A e B, troque seus valores e imprima-os. Algoritmo e Estruturas de Dados - 02/2014 UniBH 09/09/2014 Algoritmo e Estruturas de Dados 18 35 Exercícios (cont.) : 7) Informe se um aluno está aprovado ou não. Leia as notas da primeira e da segunda prova e calcule sua média. Se ela for maior ou igual a 7 (sete), o aluno esta aprovado, senão está em prova final. Leia a nota da prova final e calcule sua média final, que é a média aritmética entre a nota da prova final e da antiga média. Se a média final for maior ou igual a 5 (cinco), o aluno está aprovado senão está reprovado. Algoritmo e Estruturas de Dados - 02/2014 36 Comando ESCOLHA escolha <expressa-de-selecao> caso <condição11 >, <condição12> ... <condição1N> <comandos1> caso <condição21 >, <condição22> ... <condição2N> <comandos2> ... outrocaso <comandos> fimescolha Algoritmo e Estruturas de Dados - 02/2014 UniBH 09/09/2014 Algoritmo e Estruturas de Dados 19 Algoritmo e Estruturas de Dados - 02/2014 37 Comando ESCOLHA (cont.) Exemplo1: De qual estado é o time de futebol? Algoritmo “Times” var time : caractere inicio leia (time) escolha time caso “Flamengo”, “Fluminense” escreval (“É um time carioca”) caso “Palmeiras”, “Santos” escreval (“É um time paulista”) outrocaso escreval (“É de outro estado”) fimescolha fimalgoritmo 38 Exercícios – usando SE e ESCOLHA Algoritmo e Estruturas de Dados - 02/2014 1. Uma pessoa entre 0 e 11 anos é uma criança; entre 12 e 17 anos é um adolescente e com 18 anos ou mais é um adulto. Leia a idade de uma pessoa e diga qual sua classificação. 2. Selecione um produto abaixo pelo código e escreva que o nome do produto e seu preço. 1 – Água mineral - R$ 1,50. 2 – Suco de laranja - R$ 2,50 3 – Vitamina - R$ 3,50 UniBH 09/09/2014 Algoritmo e Estruturas de Dados 20 Algoritmo e Estruturas de Dados - 02/2014 39 Comando ENQUANTO enquanto <condição> faca <comandos> fim enquanto � <condição> usa operadores lógicos e relacionais � <comandos> são executados quando a condição é verdadeira � o valor de <condição> é alterado dentro do bloco de comandos Algoritmo e Estruturas de Dados - 02/2014 40 Exemplo1: leia 5 números e calculo o dobro de cada um Algoritmo “Dobro” var i, num, dobro : inteiro inicio i ���� 0; enquanto (i< 5) faca leia (num) dobro ���� num*2 imprima (“Dobro de “, num, “é “,dobro) i ���� i+1 fimenquanto fimalgoritmo UniBH 09/09/2014 Algoritmo e Estruturas de Dados 21 Algoritmo e Estruturas de Dados - 02/2014 41 Exemplo2: leia vários números até ler o número zero. Diga qual o menor número lido. Algoritmo “MenorValor” var valor, menor : inteiro inicio leia (valor) menor ���� valor enquanto (valor <> 0) faca se (valor < menor) entao menor ���� valor fim se leia (valor) fimenquantoescreva(“O menor valor é “, menor) fimalgoritmo Algoritmo e Estruturas de Dados - 02/2014 42 Exercícios 1. Ler N números inteiros e positivos, parar ao ler o numero zero. Ao final, dizer quantos números foram lidos. 2. Ler N números inteiros e positivos, parar ao ler o numero zero. Ao final, imprimir o maior valor lido. 3. Ler N números inteiros e positivos, parar ao ler o numero zero. Ao final, imprimir a sua soma. 4. Ler N números inteiros e positivos, parar ao ler o numero zero. Ao final, imprimir a média dos números lidos. 5. Leia N registros contendo a altura e o código de sexo dos alunos de uma turma ( M e F). Parar ao ler a altura zero. Ao final, imprimir: • A maior, a menor e a media da altura das mulheres • A maior, a menor e a media da altura dos homens • A maior, a menor e a media da altura da turma UniBH 09/09/2014 Algoritmo e Estruturas de Dados 22 Algoritmo e Estruturas de Dados - 02/2014 43 Exercícios 6. Leia 100 notas de alunos. Diga qual a maior nota, qual ao menor nota ou se elas são iguais. 7. Leia vários números, parar ao ler o número zero. Diga qual o maior número, qual o menor ou se eles são iguais. Algoritmo e Estruturas de Dados - 02/2014 44 Comando REPITA repita <comandos> ate <condicao> � <condição> usa operadores lógicos e relacionais � <comandos> são executados pelo menos uma vez � quando <condição> for verdadeira, o comando REPITA termina �o valor de <condição> é alterado dentro do bloco de comandos UniBH 09/09/2014 Algoritmo e Estruturas de Dados 23 Algoritmo e Estruturas de Dados - 02/2014 45 Exemplo1: leia 5 números e calculo o dobro de cada um Algoritmo “Dobro” var i, num, dobro : inteiro inicio i ���� 0 repita leia (num) dobro ���� num*2 escreval (“ O dobro é “,dobro) i ���� i+1 ate (i = 5) fimalgoritmo Algoritmo e Estruturas de Dados - 02/2014 46 Exemplo2: leia vários números até ler o número zero. Diga qual o menor número lido. Algoritmo “MenorValor” var valor, menor : inteiro inicio menor ���� 99999 // maior valor que existe repita leia (valor) se (valor <> 0) entao se (valor < menor) entao menor ���� valor fimse fimse ate (valor = 0) escreva (“O menor valor é “, menor) fimalgoritmo UniBH 09/09/2014 Algoritmo e Estruturas de Dados 24 Algoritmo e Estruturas de Dados - 02/2014 47 Comando PARA para v de <inicio> ate <fim> passo p faça <comandos> fimpara � a variável v começa com o valor inicial <inicio> �é incrementada com o valor p a cada loop � o comando termina quando a variável v atinge o valor <fim> Algoritmo e Estruturas de Dados - 02/2014 48 Exemplo1: leia 5 números e calculo o dobro de cada um Algoritmo “Dobro” var i, num, dobro : inteiro inicio para i de 1 ate 5 faca leia (num) dobro ���� num*2 escreval (“ O dobro é “,dobro) fimpara fimalgoritmo UniBH 09/09/2014 Algoritmo e Estruturas de Dados 25 Algoritmo e Estruturas de Dados - 02/2014 49 Exemplo2: leia 5 números e diga qual o menor valor lido. Algoritmo “MenorValor” var i, valor, menor : inteiro inicio menor ���� 99999 // maior valor que existe para i de 1 ate 5 passo 1 faca leia (valor) se (valor < menor) entao menor ���� valor fimse fimpara escreval (“O menor valor é “, menor) fimalgoritmo Algoritmo e Estruturas de Dados - 02/2014 50 Comando INTERROMPA � usado dentro de comandos de repetição: � enquanto � repita � para � ele termina o comando de repetição onde esta declarado e vai executar o comando seguinte ao comando de repetição. UniBH 09/09/2014 Algoritmo e Estruturas de Dados 26 Algoritmo e Estruturas de Dados - 02/2014 51 Algoritmo “Dobro” var i, num : inteiro inicio i ���� 0 repita leia (num) escreval (“ O dobro é “, num*2) i ���� i+1 se (i = 5) entao interrompa fimse ate falso fimalgoritmo Exemplo1: leia 5 números e calculo o dobro de cada um Algoritmo e Estruturas de Dados - 02/2014 52 Exemplo2: Leia vários números até ler o número zero. Diga qual o menor número lido. Algoritmo “MenorValor” var valor, menor : inteiro inicio leia (valor) menor ���� valor enquanto verdadeiro faca se (valor = 0) entao interrompa fimse se (valor < menor) entao menor ���� valor fim se leia (valor) fimenquanto escreva(“O menor valor é “, menor) fimalgoritmo UniBH 09/09/2014 Algoritmo e Estruturas de Dados 27 Algoritmo e Estruturas de Dados - 02/2014 53 Exercícios 1. Usando o comando REPITA, ler N números inteiros e positivos, parar ao ler o numero zero. Ao final, dizer quantos números foram lidos. 2. Usando o comando REPITA, ler N números inteiros e positivos, parar ao ler o numero zero. Ao final, imprimir o maior valor, o menor e sua soma. 3. Usando o comando REPITA, ler N números inteiros e positivos, parar ao ler o numero zero. Ao final, imprimir sua media. 4. Imprima os 5 primeiros números pares positivos (zero é par?). 5. Usando o comando PARA, ler 5 números inteiros e positivos. Ao final, imprimir o maior valor, o menor, sua soma e a media. 6. Na serie de Fibonacci, o numero atual é igual a soma dos dois números anteriores. Ex: 1 1 2 3 5 8 13 ..... Usando o comando PARA, leia um número N >=2 e imprima os N termos da série. Algoritmo e Estruturas de Dados - 02/2014 54 Vetores � variáveis que possuem o mesmo nome e são do mesmo tipo � cada variável é acessada por um índice a partir de um valor inicial e um valor final <identificadores> : vetor [<valor-inic> ...<valor-fim >] de tipo UniBH 09/09/2014 Algoritmo e Estruturas de Dados 28 Algoritmo e Estruturas de Dados - 02/2014 55 Quantos elementos tem cada vetor? vet 0 1 2 3 4 108642 serotevlista -2 -1 0 1 2 3 4 Exemplos: �nota : vetor [1 .. 4] de real � vet : vetor [ 0.. 4] de inteiro � lista : vetor [-2..4] de caractere nota 1 2 3 4 8642 Algoritmo e Estruturas de Dados - 02/2014 56 Exemplo: leia e armazene 4 notas em um vetor Algoritmo “Armazena” var i : inteiro nota : vetor [1..4] de inteiro inicio para i de 1 ate 4 passo 1 faca leia (nota[i]) fimpara fimalgoritmo UniBH 09/09/2014 Algoritmo e Estruturas de Dados 29 Algoritmo e Estruturas de Dados - 02/2014 57 Exercícios 1. Crie um vetor de 5 posições com números inteiros positivos. Leia e armazene 5 valores. Em que posição esta o maior valor? Qual a posição do menor valor? Quantos números pares há neste vetor? 2. Crie um vetor de 6 posições com números inteiros. Leia e armazene 6 valores. Inverta as posições dos números do vetor: o primeiro com o último, o segundo com o penúltimo e assim por diante. 3. Faça o mesmo para um vetor com 5 posições. 4. Em um vetor de 4 posições, 3 são notas de um aluno e a quarta é sua media final. Leia as notas deste aluno, armazene- as no vetor e calcule sua media final. Algoritmo e Estruturas de Dados - 02/2014 58 Exercício – mais difícil 1. Para a ordenação de vetores, no método da bolha compara-se o primeiro elemento com o segundo e troca-se a posição se eles estiverem fora de ordem. Sucessivamente, compara-se o segundo com o terceiro, o terceiro com o quarto até levar o maior elemento ao fim do vetor. Se os elementos forem testados sem ser feita nenhuma troca é porque já estão ordenados (use um flag). Faça um algoritmo para o método da bolha. UniBH 09/09/2014 Algoritmo e Estruturas de Dados 30 Algoritmo e Estruturas de Dados - 02/2014 59 Matrizes � a matriz é um vetor que possui mais de um índice � composta de variáveis com o mesmo nome e do mesmo tipo � cada variável éacessada por dois índices a partir de um valor inicial e um valor final <identif> : vetor [< v-inic>..<v_fim > , < v-inic>..<v-fim >] de tipo Algoritmo e Estruturas de Dados - 02/2014 60 Exemplo1: � notasTurma : vetor [1..4, 1..10] de real Quantos alunos tem a turma e quantas notas tem cada aluno? UniBH 09/09/2014 Algoritmo e Estruturas de Dados 31 Algoritmo e Estruturas de Dados - 02/2014 61 Exemplo1: leia e armazene 4 notas de 10 alunos de uma turma Algoritmo “ArmazenaNotas” var indAluno, indNota : inteiro notasTurma : vetor [1..4, 1..10] de inteiro inicio para indAluno de 1 ate 10 passo 1 faca para indNota de 1 ate 4 passo 1 faca leia (notasTurma[ indNota, indAluno ]) fimpara fimpara fimalgoritmo Algoritmo e Estruturas de Dados - 02/2014 62 Exemplo2: � diasSemana : vetor [ 1.. 7 , 1..4] de inteiro Quantos dias tem a semana e quantas semanas tem a matriz? �diasAno : vetor [1..30 , 1..12] de real Quantos dias tem cada mês? Quantos meses tem o ano? Quantos elementos tem a matriz (quantos dias tem o ano)? UniBH 09/09/2014 Algoritmo e Estruturas de Dados 32 Algoritmo e Estruturas de Dados - 02/2014 63 Exercícios 1. Um professor tem uma turma de 35 alunos. Ele deseja, usando uma matriz, ler e armazenar as 2 das notas de cada aluno. Em seguida, calcular e armazenar a média de casa aluno. Faça um algoritmo que leia as notas, calcule a média e diga a situação do aluno: aprovado se media >= 7, senão ele esta em prova final. 2. Imprima a seguinte matriz abaixo: 11 12 13 21 22 23 31 32 33 Algoritmo e Estruturas de Dados - 02/2014 64 Subprogramas � Subprograma �é um programa que auxilia o programa principal através da realização de uma determinada sub-tarefa. � é chamados dentro do corpo do programa principal como se fosse um comando. � após seu término, a execução do programa continua a partir do ponto onde foi chamado. � cada subprograma, além de ter acesso às variáveis do programa que o chamou (são as variáveis globais), pode ter suas próprias variáveis (são as variáveis locais). � UniBH 09/09/2014 Algoritmo e Estruturas de Dados 33 Algoritmo e Estruturas de Dados - 02/2014 65 � Subprograma � são escritos após a declaração das variáveis e antes do corpo do programa principal � parâmetros são informações passadas a um subprograma quando este é chamado. � funções são subprogramas que retornam um valor. � procedimentos são subprogramas que não retornam um valor. � O VisuAlg possibilita declaração e chamada de subprogramas nos moldes da linguagem Pascal: procedimentos e funções com passagem de parâmetros por valor ou referência Algoritmo e Estruturas de Dados - 02/2014 66 Procedimentos procedimento <nome_proced> [ <parametros>] // Seção de declaração de variáveis locais inicio // Seção de Comandos fimprocedimento É opcional. Se declarada, indica passagem de parâmetros por referência (seu valor pode ser alterado e retornado ao programa principal) Senão, indica passagem de parâmetros por valor. • <parametros> é uma seqüência, separadas por ponto e virgula de: [var] <nomes-de-parâmetros>: <tipo-de-dado> UniBH 09/09/2014 Algoritmo e Estruturas de Dados 34 Algoritmo e Estruturas de Dados - 02/2014 67 Exemplo1: Procedimento sem parâmetro para soma de 2 números Algoritmo “ProcSemParm” var // var globais n, m, resposta : inteiro procedimento soma var // var locais aux: inteiro inicio aux <- n + m resposta <- aux fimprocedimento Inicio n <- 4 m <- 9 soma escreva(resposta) fimalgoritmo Algoritmo e Estruturas de Dados - 02/2014 68 Exemplo2: Procedimento com parâmetro (por valor) para soma de 2 números Algoritmo “ProcComParm” var // var globais n, m, resposta : inteiro procedimento soma (x,y:inteiro) inicio // resposta é var global resposta <- x+y fimprocedimento Inicio n <- 4 m <- 9 soma (m,n) escreva(resposta) fimalgoritmo Passagem de parâmetro por valor. UniBH 09/09/2014 Algoritmo e Estruturas de Dados 35 Algoritmo e Estruturas de Dados - 02/2014 69 Exemplo3: Procedimento com parâmetro (por referência) para soma de 2 números Algoritmo “ProcComParmRef” var // var globais n, m, resposta : inteiro procedimento soma (x,y:inteiro; var result:inteiro) inicio result <- x+y fimprocedimento Inicio n <- 4 m <- 9 soma (m,n,resposta) escreva(resposta) fimalgoritmo Passagem de parâmetro por referência. Algoritmo e Estruturas de Dados - 02/2014 70 Função funcao <nome_funcao> [ <parametros>] : tipo // Seção de declaração de variáveis locais inicio // Seção de Comandos fimprocedimento É opcional. Se declarada, indica passagem de parâmetros por referência (seu valor pode ser alterado e retornado ao programa principal) Senão, indica passagem de parâmetros por valor. • <parametros> é uma seqüência, separadas por ponto e virgula de: [var] <nomes-de-parâmetros>: <tipo-de-dado> Tipo do valor retornado pela função. UniBH 09/09/2014 Algoritmo e Estruturas de Dados 36 Algoritmo e Estruturas de Dados - 02/2014 71 Algoritmo “FuncaoSemParm” var // var globais n, m, resposta : inteiro funcao soma: inteiro var // var locais aux: inteiro inicio aux <- n + m retorne aux fimfuncao Exemplo1: função sem parâmetro para soma de 2 números Inicio n <- 4 m <- 9 resposta <- soma escreva(resposta) fimalgoritmo Algoritmo e Estruturas de Dados - 02/2014 72 Algoritmo “FuncaoComParm” var // var globais n, m, resposta : inteiro funcao soma(x,y : inteiro): inteiro inicio retorne x+y fimfuncao Exemplo 2: função com parâmetro (por valor) para soma de 2 números Inicio n <- 4 m <- 9 resposta <- soma (m,n) escreva(resposta) fimalgoritmo Passagem de parâmetro por valor. UniBH 09/09/2014 Algoritmo e Estruturas de Dados 37 Algoritmo e Estruturas de Dados - 02/2014 73 Recursão � recursão é a possibilidade de um programa chamar a si mesmo �Exemplo: o fatorial de um numero N = N * ( N-1) * (N-2)* ... * 2 * 1 Algoritmo “Recursao” var fat, n: inteiro funcao fatorial (x: inteiro): inteiro inicio se x <= 2 entao retorne x senao retorne x * fatorial(x-1) fimse fimfuncao inicio leia (n) fat <- fatorial(n) fimalgoritmo Algoritmo e Estruturas de Dados - 02/2014 74 Exercícios 1. Leia dois números inteiros, calcule a sua média usando um procedimento e a imprima. 2. Faça o exercício acima usando uma função. 3. Leia dois números inteiros e usando uma função diga qual o maior deles. 4. Faça o exercício acima para 3 números, retornando o maior deles. 5. Escreva um procedimento que troque o valor de dois números. 6. Dado um numero de 3 algarismos, faça uma rotina(procedimento ou função) que decomponha este numero nos seus digitos. Exemplo: número 145 decomposto nos números 1 (centenas), 4 (dezenas) e 5 (unidades). UniBH 09/09/2014 Algoritmo e Estruturas de Dados 38 Algoritmo e Estruturas de Dados - 02/2014 75 Exercícios 7. Dado um numero de 3 algarismos, faça uma rotina(procedimento ou função) que decomponha este numero nos seus digitos. Exemplo: número 145 decomposto nos números 1 (centenas), 4 (dezenas) e 5 (unidades). 8. O digito verificador de um numero de 3 algarismos é calculado da seguinte forma: DV = (D1*4 + D2*3 + D3*2) mod 10 onde D1 é o primeiro digito do número, D2 seu segundo digito e D3 seu terceiro digito. Faça um programa que leia uma serie de números de no máximo 3 algarismos (parar ao ler zero) e escreva seu DV calculado por uma rotina (função ou procedimento). Algoritmo e Estruturas de Dados - 02/2014 76 Glossário de termos •Blocode comandos : conjunto de comandos com uma função bem definida. • Comandos : ações, instruções de uma linguagem. • Função : sub–algoritmo que retorna um valor ou uma informação. • Identificadores : nomes dados a variáveis, constantes e programas. Devem começar por letra e podem ter letras, números ou underscore. Não podem ser palavras reservadas ou ter espaços em branco. • Linguagens de programação : softwares que permitem o desenvolvimento de programas. Possuem poder de criação ilimitado desde sistemas empresariais até sistemas operacionais. • Palavra reservada: nomes de comandos da linguagem. • Procedure: sub-algoritmo que não retorna valor ou informação. • Programa : é um algoritmo escrito em uma linguagem computacional. • Variável : nome de um local de memória onde se armazena um determinado valor compatível como tipo da variável. UniBH 09/09/2014 Algoritmo e Estruturas de Dados 39 Algoritmo e Estruturas de Dados - 02/2014 77 VisuAlg VisuAlg X Pascal Algoritmo e Estruturas de Dados - 02/2014 78 VisuAlg X Pascal algoritmo "semnome" // comentário var <declaração de variáveis> inicio < comandos > fimalgoritmo CORPO DO PROGRAMA Program nomePrograma ; // comentario var <declaração de variáveis> Begin < comandos > End. UniBH 09/09/2014 Algoritmo e Estruturas de Dados 40 Algoritmo e Estruturas de Dados - 02/2014 79 VisuAlg X Pascal <identificadores> : tipo VisuAlg Pascal caráter alfanuméricochar Conj. caracteres alfanuméricosString[] real positivo, nulo ou negativoreal inteiro positivo, nulo ou negativointeger valores true ou falseboolean <identificador> ���� <expressão> leia (<identificadores>) escreva (<expressão>) escreval (<expressão>) <identificador> = <expressão>; readln (<identificadores>); write (<expressão>); writeln (<expressão>); <identificadores> : tipo valores verdadeiro ou falsológico Conj. caracteres alfanuméricoscaracter real positivo, nulo ou negativoreal inteiro positivo, nulo o negativointeiro Algoritmo e Estruturas de Dados - 02/2014 80 VisuAlg X Pascal se <condição> então <comandos> senão <comandos> fimse escolha <expressa-de-selecao> caso <condição11 > ... <comandos1> caso <condição21... <comandos2> outrocaso <comandos> fimescolha VisuAlg Pascal if <condição> then <comandos> else <comandos> ; case <variavel> of valor1 : <comandos1> ; valor2 : <comandos2> ; end; UniBH 09/09/2014 Algoritmo e Estruturas de Dados 41 Algoritmo e Estruturas de Dados - 02/2014 81 VisuAlg X Pascal enquanto <condição> faca <comandos> fim enquanto para v de <inicio> ate <fim> passo p faça <comandos> fimpara repita <comandos> ate <condicao> VisuAlg Pascal while <condição> do <comandos> ; for v := <inicio> to <fim> do <comandos> ; repeat <comandos> until <condicao> ; Algoritmo e Estruturas de Dados - 02/2014 82 VisuAlg X Pascal procedimento <nome> [ <param>] // Seção de declaração de variáveis locais inicio // Seção de Comandos fimprocedimento funcao <nome> [ <param>] : tipo // Seção de declaração de variáveis locais inicio // Seção de Comandos fimprocedimento VisuAlg Pascal procedure <nome> [ <param>] ; // Seção de declaração de variáveis locais Begin // Seção de Comandos End ; function <nome> [ <param>] : tipo // Seção de declaração de variáveis locais Begin // Seção de Comandos End ; UniBH 09/09/2014 Algoritmo e Estruturas de Dados 42 Algoritmo e Estruturas de Dados - 02/2014 83 Exercícios 1) A conversão de graus Farenheit para graus Centigrados é obtida pela fórmula: C = 5 (F – 32) 9 Faça um algoritmo que leia uma temperatura em graus Farenheit e informe seu equivalente em graus Centigrados. 2) O ganhador da Megasena recebeu de prêmio R$10.000.000,00 (dez milhões de reais) e o depositou numa caderneta de poupança. Após um mês, seu dinheiro irá render 0,5% de juros mais 0,2% de TR. Calcule qual o novo valor de sua poupança após o primeiro mês de rendimento. Algoritmo e Estruturas de Dados - 02/2014 84 Exercícios 3) Uma firma fez uma pesquisa de mercado sobre a aceitação de um determinado produto e entrevistou 2.000 (duas mil) pessoas. Faça um algoritmo que, fornecido o sexo da pessoa e sua resposta (sim ou não), informe: . quantidade de mulheres que respondeu sim. . quantidade de mulheres que respondeu não. . quantidade de homens que respondeu sim. . quantidade de homens que respondeu não. 4) Uma firma fez uma pesquisa de mercado sobre a audiência de canal de TV em várias casas de uma cidade. Para cada casa visitada, é fornecido o número de canal que é assistido: 4, 5, 7 ou 12. Faça um algoritmo que leia um número indeterminado de canais de TV (parar ao ler o canal zero) e ao final informe: . o número do canal e a quantidade de casas em que ele é assistido. UniBH 09/09/2014 Algoritmo e Estruturas de Dados 43 Algoritmo e Estruturas de Dados - 02/2014 85 Exercícios 5) O aumento salarial em uma empresa será da seguinte forma: 1. Técnico– 10% 2. Gerente – 7,5% 3. Diretor – 5% Leia o número do cargo de vários empregados (parar ao ler o cargo zero), o salário (deve ser maior que zero) e calcule o aumento a ser recebido. Algoritmo e Estruturas de Dados - 02/2014 86 Exercício de revisão Cálculo do salário líquido. 1) O salário liquido de um empregado é calculado descontado-se de seu salário bruto o imposto de renda e a contribuição para o INSS da seguinte forma: IR INSS SALARIO % DESCONTO < 1.200,00 0 % > = 1.200,00 E <2.500,00 6 % > =2.500,00 9 % SALARIO % DESCONTO < 1.500,00 7,50% > = 1.500,00 E <3.500,00 12,50% > =3.500,00 20,00% Leia o salário bruto de vários empregados (parar ao ler o salário zero) e calcule seu salário liquido usando subprogramas (funções ou procedimentos) para calcular o desconto de IR e de INSS.
Compartilhar