Preview only show first 10 pages with watermark. For full document please download

Aed 02

Aula de Algoritmo e Estrutura de Dados do Professor Patrick Pedreira.

   EMBED


Share

Transcript

Algoritmos e Estruturas de Dados PORTUGOL Pseudo Código Prof. Patrick Pedreira Sumário ❖ Tópicos a serem abordados na aula ◗ Representaç Representações de algoritmos ◗ Elementos bá básicos ◗ Algoritmos com qualidade ◗ Estruturas bá básicas de dados ◗ Definiç Definição de Tipos ◗ Comandos de entrada e saí saída ◗ Testes de mesa 1 Representações de algoritmos ❖ Três formas de representaç representação de algoritmos: ◗ Fluxograma ◗ Diagrama de Chapin ◗ PseudoPseudo-código Fluxograma ❖ É uma representaç representação grá gráfica de algoritmos onde formas geomé geométricas diferentes implicam aç ações (instruç (instruções, comandos) distintos. ◗ Tal propriedade facilita o entendimento das idé idéias contidas nos algoritmos. ❖ O fluxograma se resume a um único sí símbolo inicial, por onde a execuç execução do algoritmo começ começa, e um ou mais sí símbolos finais, que são pontos onde a execuç execução do algoritmo se encerra 2 Fluxograma ❖ Principais formas geomé geométricas usadas em fluxogramas Fluxograma ❖ Representaç Representação do algoritmo de cá cálculo da mé média de um aluno sob a forma de um fluxograma. 3 Fluxograma início C1 C2 C3 fim Fluxograma início separar ingredientes misturar ingredientes colocar massa no forno tirar bolo do forno fim 4 Fluxograma início esperar assar separar ingredientes t ≥ 30min misturar ingredientes colocar massa no forno F V tirar bolo do forno fim Diagrama de Chapin ❖ Substitui o fluxograma tradicional por um diagrama que apresenta uma visão hierá hierárquica e estruturada da ló lógica do programa. 5 Diagrama de Chapin ❖ Diagrama de Chapin para o algoritmo do cá cálculo da mé média de um aluno Diagrama de Chapin separar separaringredientes ingredientes misturar misturaringredientes ingredientes colocar colocarmassa massano noforno forno tirar tirarbolo bolodo doforno forno 6 Diagrama de Chapin separar separaringredientes ingredientes misturar misturaringredientes ingredientes colocar colocarmassa massano noforno forno tt≥≥30min 30min esperar esperarassar assar tirar tirarbolo bolodo doforno forno Pseudo-código (Portugol) ❖ Caracterí Características: ◗ Esta forma de representaç representação de algoritmos, també também conhecida como português estruturado ou portugol, portugol, é bastante rica em detalhes e, por assemelharassemelhar-se bastante à forma em que os programas são escritos. ◗ Encontra muita aceitaç aceitação, sendo portanto a forma de representaç representação de algoritmos que será será adotada nesta disciplina. ◗ Na verdade, esta representaç representação é suficientemente geral para permitir que a traduç tradução de um algoritmo nela representado para uma linguagem de programaç programação especí específica seja praticamente direta. 7 Pseudo-código (Portugol) ❖ Caracterí Características: ◗ Sintaxe mais simples que a de uma Linguagem de Programaç Programação. ◗ Ênfase nas idé idéias e não nos detalhes. ◗ Facilita construir um programa em Linguagem de Programaç Programação. Pseudo-código (Portugol) ❖ Ainda em um formato bem textual ◗ Ingredientes: farinha, açú car, leite açúcar, ◗ Separar os ingredientes ◗ Misturar os ingredientes ◗ Colocar massa no forno ◗ Esperar assar por 30 minutos ◗ Retirar bolo do forno 8 Sumário ❖ Representaç Representações de algoritmos ❖ Elementos bá básicos ❖ Algoritmos com qualidade Elementos básicos de um algoritmo ❖ A representaç representação de um algoritmo na forma de pseudocó pseudocódigo é a seguinte: Algoritmo Iní Início Fim. 9 Elementos básicos de um algoritmo :: Exemplo Algoritmo perimetro_circunferência {declaraç {declaração de constantes e variá variáveis} constante pi = 3,1415; var raio, perim: perim: real; inicio {comandos} ler (raio); perim  2 * pi * raio; escrever (perim ); (perim); fim Elementos básicos de um algoritmo ❖ Dados (variá (variáveis e constantes) ❖ Tipos de dados ❖ Operadores ❖ Comandos ❖ Funç Funções ❖ Comentá Comentários 10 Elementos básicos de um algoritmo :: Exemplo Algoritmo perimetro_circunferência {declaraç ção de variá áveis} {declara vari {declaração variáveis} constante PI = 3,1415; var raio, perim: perim: real; dado constante dado variá variável tipo de dado {comandos} inicio ler (raio); comentá comentário operador perim  2 * PI * raio; escrever (perim perim); ); ((perim); funç função fim Elementos básicos de um algoritmo :: Tipos de Dados ❖ Tipos ◗ Uma das principais caracterí características dos computadores é a manipulaç manipulação de informaç informações  Por isso é necessá necessário mecanismos de se trabalhar com diversos tipos de dados ◗ Apesar de internamente o computador manipular unicamente números as linguagens de programaç programação permitem que utilizemos outros tipos de informaç informação nos programas de forma transparente ❖ Podemos definir um tipo de dados como um conjunto de objetos que tem em comum o mesmo comportamento diante de um conjunto definido de operaç operações. Vejamos alguns exemplos concretos. 11 Elementos básicos de um algoritmo :: Tipos de Dados ❖ Podemos dizer que os seres humanos são um tipo ◗ Formam um conjunto de dados que se comportam de forma similar quando comem, dormem, bebem, andam, etc. ◗ Essas aç ações são comuns aos seres humanos e definem o conjunto de operaç operações que podem atuar sobre o tipo ser humano. ❖ Outro exemplo: aviões ◗ Podemos identificar sobre todos os objetos aviões operaç operações similares:  Voar, pousar e decolar Elementos básicos de um algoritmo :: Tipos de Dados ❖ Podemos representar o conjunto de pessoas como: ◗ {Lauro, André André, Sí Sílvia, Lú Lúcia, Vera} ❖ Poré Porém nem todo o conjunto de objetos é um tipo ◗ {1, a, José José da Silva, Fusca}  Não é um tipo pois seus elementos não têm comportamento similar segundo algum conjunto de operaç operações ❖ Alguns tipos são formados por nú números. Ex.: ◗ Números inteiros (Z) ◗ Números reais (R) ❖ Os exemplos acima são conjuntos de elementos que suportam operaç operações matemá matemáticas: adiç adição, subtraç subtração, multiplicaç multiplicação, etc. 12 Elementos básicos de um algoritmo :: Tipos de Dados ❖ Os tipos nú números são particularmente importantes visto que os computadores trabalham naturalmente com números. ❖ Podemos també também considerar letras como um tipo, com algumas operaç operações em comum: ◗ Escrever, ler, concatenar, etc. ❖ Infelizmente as linguagens de programaç programação são limitadas e não podem manipular todos os tipos existentes no mundo real. ◗ Apenas um conjunto mais restrito ◗ Por isso, a construç construção de algoritmos para computador deve lidar exclusivamente com os tipos definidos nas linguagens de programaç programação Elementos básicos de um algoritmo :: Tipos de dados ❖ Em termos de computaç computação... ◗ Definem a natureza do dado, as operaç operações que podem ser realizadas com o dado e o espaç espaço a ser ocupado na memó memória. ❖ Outros exemplos de tipos: ◗ Inteiro: 10 -5 ◗ Real (ponto flutuante): 1,34 -128 13,4 ◗ String de caracteres: 'quarta'quarta-feira' ◗ Lógico: TRUE (1) -5,0 'Abril' FALSE (0) 13 Elementos básicos de um algoritmo :: Dados ❖ Dados Constantes ◗ O valor de uma constante não se altera apó após sua definiç definição. ◗ Exemplos:  N_NEPERIANO = 2,7182  UNIVERSIDADE = 'UESB' ❖ Dados Variá Variáveis ◗ Elemento que têm a funç função de associar um nome a uma porç porção da memó memória onde um dado pode ser armazenado. Elementos básicos de um algoritmo :: Operadores ❖ Atribuiç Atribuição ❖ Aritmé Aritméticos ❖ Relacionais ❖ Lógicos 14 Elementos básicos de um algoritmo :: Operador Atribuição ❖ Utilizado para atribuir um valor a uma variá variável nome da variável Valor ❖ Notaç Notação: x1 ← 23; temp ← x2; x2; Elementos básicos de um algoritmo :: Operadores Aritméticos ❖ Dados de entrada: entrada: tipo numé numérico (int ou float) float) ❖ Resultado: Resultado: tipo numé numérico (int ou float) float) ❖ Operadores comuns: +, -, *, / Exemplos: ◗ 10 pot 2 = 100;  pot = potencia de dois nú números ◗ alfa ← 10 div 4;  div= div= resultado inteiro da divisão ◗ 9 raiz 2;  Radiciaç Radiciação de dois nú números ◗ resto ← 1 % 4; ou 1 resto 4, 1 MOD 4  resto = resto da divisão inteira de dois nú números inteiros ◗ delta ← 5 * 5 – 4 * 1 * 4; 15 Elementos básicos de um algoritmo :: Operadores Relacionais ❖ Dados de entrada: entrada: tipo numé numérico (int ou float) float) ❖ Resultado: Resultado: tipo ló lógico ❖ Exemplos: ◗ cond1 ← 2 == 3; ◗ cond2 ← 1.6 ≠ 5.0; ◗ cond3 ← 1 > 5; ◗ cond4 ← (1 + 2) < 5; ◗ cond5 ← 10 ≥ 3; ◗ cond6 ← 1 ≤ (– 4 / 3); Elementos básicos de um algoritmo :: Operadores Lógicos ❖ Dados de entrada: entrada: tipo ló lógico ❖ Resultado: Resultado: tipo ló lógico ❖ Exemplos: ◗ cond1 ← V AND F; V e F; ◗ cond2 ← F OR F; F ou F; ◗ cond3 ← NOT cond1; não cond1; ◗ cond4 ← (V AND F) OR (5 > 3); (V e F) ou (5 > 3); 16 Elementos básicos de um algoritmo :: Exercícios Operadores Lógicos ❖ Qual o resultado das expressões ló lógicas? gicas? ◗ V e ( V ou F) ◗ V e não (V ou F) ◗ (F ou V) e não (F) Elementos básicos de um algoritmo :: Precedência de Operadores 1. NOT – (negaç (negação) 2. * 3. + – (subtraç (subtração) 4. == < 5. AND 6. OR 7. ← / % (resto) > ≠ ≥ ≤ 17 Elementos básicos de um algoritmo :: Exercícios sobre Operadores ❖d + y - z * a + p ❖d / y ❖ y div a ❖b / z ❖r % q ❖y % d ❖ ((z / a) + b*a ) - d y=2 z = 4.0 a=8 b = 6.0 d = 12 p=4 q=3 r = 10 Elementos básicos de um algoritmo :: Exercícios sobre Operadores ❖ (B == A * C) AND (LOG OR T) ❖ (B > A) OR (B == A) ❖ LOG OR (B / A ≥ C) AND NOT(A NOT(A ≥ C) ❖ NOT LOG OR T AND (A + B ≥ C) ❖ NOT LOG OR (B * 2 - C == 0) ❖ LOG OR NOT (B * B ≤ C * 10 + A * B) A=2 B=7 C = 3.5 LOG = F 18 Elementos básicos de um algoritmo :: Funções ❖ Pré Pré-definidas ❖ Definidas pelo programador ❖ Exemplos: ◗ seno(angulo) ◗ pow(x,y) pow(x,y) ◗ sqrt(resto) sqrt(resto) ◗ exp(tempo) exp(tempo) ◗ ler(var1,var2,...) ◗ escrever(resul1,result2,...) Elementos básicos de um algoritmo :: Comentários ❖ Utilizados para descrever o algoritmo, esclarecendo trechos do có código ◗ { isso é um comentá comentário em pseudocó pseudocódigo} ◗ // isso tambem é um comentá comentário ❖ Notaç Notação em Linguagem C: ◗ // ◗ /* */ 19 Sumário ❖ Representaç Representações de algoritmos ❖ Elementos bá básicos ❖ Algoritmos com qualidade Algoritmos com qualidade ❖ Devem ser feitos para serem lidos por seres humanos! ❖ Escreva os comentá comentários no momento em que estiver escrevendo o algoritmo. 20 Algoritmos com qualidade ❖ Os comentá comentários devem acrescentar alguma coisa, e não frasear o comando: {Multiplicaç ção de {Multiplica {Multiplicação de bb por por h:} h:} area ← b * h; area ← b * h; {Cá álculo da rea do {C {Cálculo da áárea do retângulo:} retângulo:} area ← b * h; area ← b * h; Algoritmos com qualidade ❖ Use comentá comentários no pró prólogo: {{ UNIVERSIDADE UNIVERSIDADE ESTADUAL ESTADUAL DO DO SUDOESTE SUDOESTE DA DA BAHIA BAHIA FULANO DA SILVA FULANO DA SILVA DATA: DATA: 25/11/2008 25/11/2008 ÚLTIMA ÚLTIMA MODIFICAÇÃO: MODIFICAÇÃO: 26/09/2007 26/09/2007 ALGORITMO ALGORITMO DE DE DEMONSTRAÇÃO DEMONSTRAÇÃO }} 21 Algoritmos com qualidade ❖ Use espaç espaços em branco para melhorar a legibilidade: netos←filhos*2-3; netos←filhos*2-3; netos netos← ←filhos filhos**22--3; 3; Algoritmos com qualidade ❖ Escolha nomes representativos para as variá variáveis: pp ←← cc ++ l; l; preco preco ←← custo custo ++ lucro; lucro; 22 Algoritmos com qualidade ❖ Utilize um comando por linha. ❖ Utilize parênteses para melhorar a compreensão e evitar erros. ❖ Utilize identaç identação (recuo de texto). Algoritmos com qualidade ❖ Declaraç Declaração de uma variá variável em um algoritmo var [, ,...]: tipo; ❖ Declaraç Declaração de uma constante em um algoritmo constante =; =; ... =; 23 Algoritmos com qualidade ❖ Exemplo: constante MAXIMO = 100; var quantidade, filhos, netos: inteiro; inteiro; aberto: booleano; booleano; altura: real; real; resposta: caractere; caractere; ❖ As palavras em negrito são palavras reservadas, ou seja, não podem podem ser utilizadas como identificadores definidos pelo programador ❖ Palavras entre <> são elementos do algoritmo a serem substituí substituídos por nomes ou valores a serem definidos pelo programador ❖ Elementos entre [] são opcionais ❖ Textos entre {} são comentá comentários explicativos e não são considerados no processo de execuç execução Algoritmos com qualidade ❖ Atribuiç Atribuição é feita da seguinte forma:  vel>  vel> 24 Algoritmos com qualidade ❖ Exemplo: altura  1.80; filhos  3; netos  filhos * 2 – 3; quantidade  MAXIMO – 10; {consideramos a constante MAXIMO com valor 100} aberto  F; aberto  aberto e V; {aberto recebe o resultado da operaç operação F e V, que é F} aberto  quantidade < MAXIMO; {como quantidade < MAXIMO, aberto receberá receberá F} Resposta  ´S´; Algoritmos com qualidade ❖ Blocos de instruç instruções ◗ Instruç Instruções são sempre realizadas em sequencia ◗ A construç construção de um algoritmo é o encadeamento de instruç instruções individuais ◗ A utilizaç utilização de blocos de instruç instruções deixa claro onde a sequencia de instruç instruções inicia e termina ◗ Todo algoritmo tem pelo menos um bloco de instruç instruções que indica o iní início e o final do pró próprio algoritmo. 25 Algoritmos com qualidade ❖ O bloco de instruç instruções é construí construído como segue: iní início ... <última instruç instrução do bloco> fim Algoritmos com qualidade ❖ Se juntarmos as instruç instruções e declaraç declarações de variá variáveis que já já apresentamos, formaremos um có código vá válido: constante MAXIMO = 100; var quantidade, filhos, netos: inteiro; inteiro; aberto: booleano; booleano; altura: real; real; resposta: caractere; caractere; iní início altura  1.80; filhos  3; netos  filhos * 2 – 3; quantidade  MAXIMO – 10; {consideramos a constante MAXMO com valor 100} aberto  F; aberto  aberto e V; {aberto recebe o resultado da operaç operação F e V, que é F} aberto  quantidade < MAXIMO; {como quantidade < MAXIMO, aberto receberá receberá F} Resposta  ´S´; fim 26 Exercícios ❖ Calcular o nú número de vé vértices de um cubo (pag (pag.. 31) ❖ Encontrar as raí raízes de um equaç equação de segundo grau (pag (pag.. 31) Entrada e saída ❖ Entrada ◗ Meio pelo qual o usuá usuário pode informar dados que serão utilizados pelo programa em seu processamento ◗ Entrada é feita pelo comando leia(); leia(); escreva(); Exemplo 1: var variavel1: real; ... escreva( escreva(“O resultado é: ”, variavel1); Exemplo 2: var variavel1: real; ... escreva( escreva(“O valor ”, variavel1, “ é o resultado final.” final.”); Exercício ❖ Adaptar o problema anterior do exercí exercício para usar entrada e saí saída ◗ Calcular o nú número de vé vértices de um cubo (pag (pag.. 35) 28 Papéis do usuário e do desenvolvedor Desenvolvedor Desenvolvimento do algoritmo Transformaç Transformação em programa Geraç Geração do código executá executável Usuá Usuário Utilizaç Utilização do programa executá executável Entrada de dados para processamento Aná Análise da saí saída Método para Construção de Algoritmos ❖ Os passos necessários para a construção de um algoritmo são: ◗ ler atentamente o enunciado do problema, compreendendocompreendendo-o e destacando os pontos mais importantes; ◗ definir os dados de entrada, ou seja, quais dados serão fornecidos; ◗ definir os dados de saí saída, ou seja, quais dados serão gerados depois do processamento; ◗ definir o processamento, ou seja, quais cá cálculos serão efetuados e quais as restriç restrições para esses cá cálculos. O processamento é responsá responsável pela obtenç obtenção dos dados de saí saída com base nos dados de entrada; ◗ definir as variá variáveis necessá necessárias para armazenar as entradas e efetuar do processamento; ◗ elaborar o algoritmo; ◗ testar o algoritmo realizando o teste de mesa. 29 ❖ Observaremos agora um pseudocódigo que recebe um valor inteiro, fornecido pelo usuário, e o retorna no monitor. algoritmo “exemplo 1” var x: inteiro; inicio leia (x); escreva (x); fim {final do algoritmo} Teste de mesa ❖ Difí Difícil verificar se o algoritmo construí construído realiza realmente a tarefa para o qual foi projetado ❖ Aliá Aliás, correç correção de algortimos é uma das caracterí características essenciais ❖ Dizemos que um algoritmo é correto se ele produz os resultados esperados ❖ É importante destacar que muitos algoritmos funcionam de forma adequada para a maioria das entradas, poré porém apresentam resultados invá inválidos ou incorretos para determinadas entradas ◗ Neste caso, consideraremos o algoritmo incorreto 30 Teste de mesa ❖ O teste de mesa é um meio pelo qual podemos acompanhar a execuç execução de um algoritmo, passo a passo, ou instruç instrução a instruç instrução. ❖ Dessa forma podemos encontrar erro e confirmar se a ló lógica do algoritmo está está correta ❖ Para acompanhar o desenrolar de um algoritmo é importante verificar o estado dos dados a cada instruç instrução, verificando o conteú conteúdo de todas as variá variáveis definidas no algoritmo. ❖ Vejamos o exemplo seguinte Teste de mesa ❖ Algoritmo vertices_objeto_ geometrico var vertices, vertices, faces, arestas: inteiro; iní início escreva( escreva(“Entre com o número de faces do objeto geomé geométrico: trico: ”); leia(faces ); leia(faces); escreva( escreva(“Entre com o número de arestas do objeto geomé geométrico: trico: ”); leia(aretas ); leia(aretas); vertices  arestas + 2 – faces; escreva( escreva(“O número de vértices do objeto especificado é: ”, vertices); fim 31 Teste de mesa ❖ O teste de mesa pode ser feito por meio de uma tabela que, a cada linha, são mostrados os conteú conteúdos das variá variáveis do algoritmo e o nú número da linha a ser executada. ❖ Nas linhas em que uma variá variável é definida é lida (entrada), o valor da variá variável ficará ficará entre colchetes [] ❖ E quando o conteú conteúdo de uma variá variável for escrito (saí (saída), ficará ficará entre chaves {} ❖ Eventualmente, podemos adicionar uma última coluna para explicar o que está está acontecendo na instruç instrução Teste de mesa ❖ Teste de mesa para o objeto geomé geométrico cubo linha vertices faces arestas comentá comentário 1 ? ? ? Variá Variáveis com valores indefinidos 2 ? [6] ? faces lida 3 ? 6 ? 4 ? 6 [12] arestas lida 5 8 6 12 Cálculo de vé vértices 6 {8} 6 12 Saí Saída com o nú número de vé vértices 32 Teste de mesa ❖ Teste de mesa para o objeto geomé geométrico piramide triangular linha vertices faces arestas comentá comentário 1 ? ? ? Variá Variáveis com valores indefinidos 2 ? [4] ? faces lida 3 ? 4 ? 4 ? 4 [6] arestas lida 5 4 4 6 Cálculo de vé vértices 6 {4} 4 6 Saí Saída com o nú número de vé vértices Exercício ❖ Faç Faça o teste de mesa para o algoritmo abaixo e comente os resultados encontrados (pag (pag.. 37) Algoritmo Troca_Valores_Versao1 var a, b: inteiro; inicio leia(a,b); ab; ba; escreva(a, b); fim 33 Exercício ❖ Com base nos resultados encontrados anteriormente reescreva o algoritmo, alterando o que julgar necessá necessário e a seguir, faç faça o teste de mesa (pag (pag.. 38) Exercício ❖ Com base nos resultados encontrados anteriormente reescreva o algoritmo, alterando o que julgar necessá necessário e a seguir, faç faça o teste de mesa (pag (pag.. 38) ❖ Soluç Solução Algoritmo Troca_Valores_Versao1 var a, b, aux: aux: inteiro; inicio leia(a,b); aux auxa; ab; baux; aux; escreva(a, b); fim 34 Exercício ❖ Uma fá fábrica de arruelas precisa calcular o custo de envio de um conjunto de unidades. Escreva um pseudopseudo-código para tal. Considere que: (pró (próximos slides) Exercício :: Algoritmo inicial 1. Calcular área 2. Calcular volume (área × espessura) 3. Calcular peso (volume × densidade × unidades) 4. Calcular custo (peso × frete) 35 Exercício :: Algoritmo inicial A área é calculada tendo por base o diâmetro interno e externo de cada peç peça.  d_int  Areaint = π    2  d_int d_ext 2  d _ ext  Areaext = π    2  2 Area = Aext − Aint Exercício :: Algoritmo inicial 2. O volume depende da espessura da peç peça e de sua área: Volume = Area × espessura 3. O peso total depende do volume da densidade e do número de unidades das peç peças: as: Peso = Volume × densidade × unidades 4. O custo é uma relaç relação entre peso e frete Custo = Peso × frete 36 Exercício :: Pseudo-código Algoritmo arruela { Constantes} constante PI = 3,1415; {Variá {Variáveis de entrada} var d_ext, d_ext, d_int: d_int: real; real; var espessura, densidade, unidades, frete: real; real; {Variá {Variável de saí saída} var custo: real; real; {Variá {Variáveis do programa} var area, area, area_ext, area_ext, area_int, area_int, volume, peso: real; real; ... Exercício :: Pseudo-código (cont.) ... iní início ler( ler(d_ext, d_ext, d_int, d_int, espessura, densidade, unidades, frete); area_ext ← pi * (d_ext /2) * (d_ext /2); (d_ext/2) (d_ext/2); area_int ← pi * (d_int /2) * (d_int /2); (d_int/2) (d_int/2); area ← area_ext – area_int; area_int; volume ← area * espessura; peso ← volume * densidade * unidades; custo ← peso * frete; escrever (custo); fim 37 Questões Exercícios Resolvidos ❖ 1- Gere um pseudocódigo que aplique um desconto de 30% sobre o valor de um produto, recebido como entrada, e retorne o resultado da manipulação na saída padrão. 38 Exercícios Resolvidos ❖ 1- Solução algoritmo “desconto” var valor, resultado: real; inicio escreva (“Entre com o valor do produto: ”); leia (valor); resultado <- valor * 0.7; escreva (“Valor com desconto de 30%: ”); escreva (resultado); fim Exercícios – Agora é sua vez... ❖ 1- Faça um pseudocódigo de um algoritmo que receba 4 notas, calcule e mostre a média aritmética entre elas. ❖ 2- Elabore um algoritmo que calcule a área de um círculo. Lembre-se: Área = pi * r². ❖ 3- Elabore um algoritmo que receba como entrada o valor do saque realizado pelo cliente de um banco e retorne quantas notas de cada valor serão necessárias para atender ao saque com a menor quantidade de notas possível. Serão utilizadas notas de 100, 50, 20, 10, 5, 2 e 1 reais. 39 Exercícios – Agora é sua vez... ❖ 4- Faça um algoritmo que leia um número de quatro dígitos e escreva-o invertido. Por exemplo, se o número lido for 2548, o resultado será 8452. Utilize PORTUGOL. Dica: qualquer número pode ser decomposto mediante sucessivas divisões inteiras e com operações de resto. Por exemplo, 2579 div 1000 = 2; 2579 resto 1000= 579; 579 div 100=5; 579 resto 100 = 79 e assim sucessivamente. Por outro lado, um número pode ser composto de sucessivas multiplicações e adições. Por exemplo, o número 25 pode ser construído a partir dos números 2 e 5, multiplicando-se 2 por 10 e 5 por 1 e somando-se os resultados. 40