Baixe o app para aproveitar ainda mais
Prévia do material em texto
Conteudista Prof. Me. Claudiney Sanches Júnior Revisão Textual Aline de Fátima Camargo da Silva Algoritmos 2 Sumário Objetivos da Unidade .......................................................................................... 3 A Necessidade de Pensar .................................................................................... 4 Algoritmo .................................................................................................................... 6 Como Construir um Algoritmo ................................................................................. 9 Material Complementar ................................................................................... 19 Autoatividade ..................................................................................................... 20 Referências ......................................................................................................... 21 Gabarito .............................................................................................................. 22 3 • Analisar programas de computadores a fim de identificar sua estrutura e funcionalidade; • Descrever a relação entre algoritmos e a solução de problemas computa- cionais; • Demonstrar a aplicação do processo de criação de algoritmos em contex- tos diversos; • Avaliar e comparar diferentes conceitos de algoritmos para desenvolver soluções coerentes e válidas em problemas específicos. Objetivos da Unidade Este arquivo PDF contém o mesmo conteúdo visto on-line. Sua disponibili- zação é para consulta off-line e possibilidade de impressão. No entanto, re- comendamos que acesse o conteúdo on-line para melhor aproveitamento. 4 A Necessidade de Pensar Os Computadores são máquinas fascinantes que, muitas vezes, podem dar a impressão de possuir inteligência; porém, elas não têm a capacidade de pensar, mas sim apenas uma enorme capacidade de ler, processar e armazenar dados. A definição de quando e quais dados devem ser processados cabe ao ser hu- mano, criando, assim, os Programas de Computadores. Para ilustrar o conceito de Programa, podemos compará-lo à receita culinária, que é um conjunto de instruções claras e objetivas, dispostas logicamente, com a intenção de tor- nar capaz qualquer leitor que queira preparar o prato. Desse modo, usamos a lógica de Programação com o objetivo de aprender a construir Programas coerentes e válidos. Figura 1 – Programador Fonte: Freepik #ParaTodosVerem: a imagem mostra mãos humanas digitando em um teclado de computador. Fim da descrição. Antes de iniciar o desenvolvimento de qualquer solução, é fundamental conhe- cer profundamente o problema que se pretende solucionar: saber quais serão as entradas, as saídas que se esperam do Sistema e como elas serão validadas. Para entender melhor a necessidade de uma análise do problema, considere a situação de uma pessoa que observa vários indivíduos tomando café em uma padaria: algumas escolhem adoçantes, enquanto outras escolhem açúcar. As 5 que escolhem adoçante são, na maioria, obesas; e as que escolhem açúcar, são magras. Uma rápida análise pode levar o observador ao seguinte raciocínio lógico: ado- çante engorda, pois a maioria que usa é obesa, e açúcar emagrece; conclusão equivocada, por não analisar bem o problema. Em geral, os programadores não fazem o planejamento e uma análise do proble- ma, preferindo partir logo para a fase de codificação do Programa, mas ir logo para o microcomputador pode ser uma grande armadilha. Figura 2 – Programação Fonte: Freepik #ParaTodosVerem: a imagem mostra uma pessoa sentada à uma mesa, ela usa fones de ouvido. À sua frente, um computador e um laptop. Fim da descrição. Esses programadores estão na mesma situação de uma pessoa que pretende construir uma casa, iniciando as obras sem uma planta. Logo que as paredes estão erguidas, descobre-se que os cômodos ficaram pequenos, sem ventilação e que não estão voltados para o sol, sendo necessário reiniciar o trabalho. Assim, não cometa o erro de iniciar a Programação sem uma planta. Na Engenharia Civil, a planta determina onde e como será a casa; enquanto em Computação, podemos optar pelos Algoritmos e pelos Fluxogramas. 6 Algoritmo Um Algoritmo é uma sequência de passos que visam a atingir objetivos bem de- finidos em um determinado período de tempo. Ele é composto por instruções nítidas e bem definidas, com o objetivo de resolver o problema; é um caminho que leva à solução; uma norma de solução a ser trilhada. Figura 3 – Algoritmos Fonte: Freepik #ParaTodosVerem: a imagem mostra mãos humanas digitando em um computador. O teclado possui uma iluminação colorida. Fim da descrição. Sempre que executado, sob as mesmas condições, produz o mesmo resul- tado; uma vez construído, poderá ser traduzido em qualquer Linguagem de Programação, agregado às funcionalidades disponíveis no ambiente de desen- volvimento. Costumamos chamar esse processo de Codificação. Nesse momento, já temos um vocabulário básico que você precisa relembrar: 7 Glossário • Programa: conjunto de instruções claro e objetivo, disposto logicamente; • Algoritmo: sequência de passos que visam a atingir um ob- jetivo em um determinado período de tempo; • Análise: levantamento e entendimento do problema. O Algoritmo é importante, pois representa fielmente o raciocínio lógico e permite resumir os passos necessários na resolução do problema. Dessa forma, você não irá se distrair com detalhes computacionais que podem ser acrescentados mais tarde e focalizará no que é relevante, a lógica da construção do Algoritmo. Outro fator primordial é que o Algoritmo é independente da Linguagem, pos- sibilitando que ele seja codificado em diferentes Linguagens, incorporando as funcionalidades disponíveis nos diversos ambientes. Você conseguiria imaginar, por exemplo, um Algoritmo para “fazer café”? Seria assim: 1. Encha a chaleira com 750 ml de água; 2. Coloque a chaleira para ferver; 3. Coloque o filtro no porta-filtro; 4. Coloque duas colheres de sopa de café no filtro; 5. Após a água ter fervido, acrescente aos poucos 500 ml de água sobre o filtro; 6. Aguarde coar; 7. Adoce a gosto. Se os passos forem seguidos, uma pessoa consegue atingir o objetivo de fazer café, mas, essa sequência poderia ser escrita de outra forma, visto que ela parte do princípio de que todos os ingredientes estavam disponíveis. 8 Como você faria com a previsão de falta de algum ingrediente? Seria lógico imaginar que os itens com maior probabilidade de faltar neste Algoritmo são o pó de café e o filtro. Assim, refinando o Algoritmo, temos: 1. Encha a chaleira com 750 ml de água; 2. Coloque a chaleira para ferver; 3. Enquanto a chaleira está no fogo 4. Se houver filtro, coloque o filtro no porta-filtro; 5. Senão, desligue a chaleira, vá até o Mercado comprar filtro e volte ao 2; 6. Se houver café, coloque duas colheres de sopa de café no filtro; 7. Senão, desligue a chaleira, vá até o Mercado comprar café e volte ao 2; 8. Após a água ter fervido, acrescente aos poucos 500 ml de água sobre o filtro; 9. Aguarde coar; 10. Adoce a gosto. Você pode notar que todo Algoritmo é composto por instruções ou comandos bem definidos, com o objetivo de resolver o problema proposto. No exemplo, você poderia discordar dos itens selecionados, como tendo a maior probabilida- de de faltar e de fazer variações do Algoritmo de fazer café. Existem inúmeras possibilidades de caminhos, mas só será considerado correto a via que levará a solução e atingir o objetivo. O que ocorreu, neste exemplo, foi a inclusão de dois testes seletivos, por meio de uma condição que determina qual ou quais ações serão executadas. Na versão anterior, você observa que todas as ações são executadas, enquanto na segunda versão há ações que dependem do teste de verdadeiro ou falso, como quando perguntamos “se houver filtro” então “coloque o filtro”. 9 Esse Algoritmo está correto, uma vez que atingeseu objetivo; porém, pode ser melhorado; quando o aprimoramos, estamos refinando o Algoritmo. A próxima seção detalhará um pouco mais sobre como criar Algoritmos e quais são os passos necessários. Como Construir um Algoritmo Primeiro, deve-se identificar o problema e o objetivo do Algoritmo, fazendo a leitura do enunciado ou da questão. Em seguida, você precisará localizar as en- tradas de dados, ou seja, as informações que serão fornecidas e, a partir delas, verificar os cálculos ou processamento. A identificação das saídas será a próxima etapa, tendo foco nos resultados. Figura 4 – Processamento de dados Fonte: Freepik #ParaTodosVerem: a imagem mostra uma “chuva” de dados formados por números e letras em tons de azul e magenta. Fim da descrição. Com esses dados em mãos, você determinará quais passos são necessários para transformar as entradas nas saídas desejadas. Depois de estabelecidos os pas- sos de transformação, você irá construir o Algoritmo e definir os testes. Estes são os passos para Construção de Algoritmo: 10 1. Identificar objetivo; 2. Identificar as “entradas de dados”; 3. Identificar as “saídas de dados”; 4. Determinar o que deve ser feito para transformar entradas em saídas: • Observar as regras; • Obedecer a limitações inclusive do computador; • Determinar ações possíveis de serem realizadas; 5. Construir o Algoritmo; 6. Testar a solução. Antes de começar a formalização do Algoritmo, você necessitará identificar os itens 2, 3 e 4, isto é, Entrada, Processamento e Saída. Se preferir, poderá responder às seguintes perguntas: • O que é preciso para fazer? – Com essa pergunta, você conseguirá iden- tificar as entradas de dados do Algoritmo, ou seja, você dominará o passo 2. Crie uma lista com todas as entradas; • Como chegar ao que quero? – Essa pergunta vai localizar o proces- samento. Determinará o passo 4, como deve ser feito, as regras do Algoritmo, as limitações e as ações necessárias; • O que quero? – Essa pergunta vai ajudá-lo a identificar as saídas do Sistema. Para facilitar o seu entendimento de como as perguntas podem colaborar no processo de elaboração, vamos a um exemplo. Imagine que você queira criar um Algoritmo para somar dois números. Assim, teríamos: 11 1. Entrada: (O que preciso?) • Primeiro número; • Segundo número. 2. Processamento: (Como chegar ao que quero?) • Somar os números. 3. Saídas: (O que quero?) • Números somados. Agora, fica bem fácil você construir o Algoritmo. Colocando a sequência em for- ma de comandos, temos: • Solicite o primeiro número; • Grave em primeiroN; • Solicite o segundo número; • Grave em segundoN; • Grave em Soma <- primeiroN + segundoN; • Escreva o valor de Soma. Como você observou, os passos para a soma de dois números possuem sequência lógica: você não consegue somar os números sem ter as entradas e sem saber quais são os números que a pessoa vai utilizar; por isso, atribuímos às variáveis primeiroN, segundoN e Soma para o Algoritmo. 12 As variáveis são espaços reservados para armazenar dados que utilizamos quan- do necessário; na construção de um Algoritmo, seria como reservar um espaço para que, quando preenchido, possa ser usado. No ambiente computacional, as informações são guardadas em um dispositivo eletrônico chamado de memória. Você pode imaginar esta como um armário repleto de gavetas, que são os locais físicos responsáveis por armazenar objetos. Figura 5 – Memória Fonte: Freepik #ParaTodosVerem: a imagem mostra uma mão humana segura uma memória de computador, dispositivo retangular com detalhes preto, verde e dourado. Fim da descrição. Os objetos podem ser substituídos, assim como uma variável pode ter seu dado alterado. Quando se atribui um nome a uma variável, estamos identificando uma das gavetas. Para usar no futuro, seria como colocar uma etiqueta na gaveta, sendo que cada gaveta pode guardar apenas um dado, sempre do mesmo tama- nho da reserva inicial. A utilização da memória é feita pelo programador, mas o Sistema Operacional gerenciará e deverá tornar transparente ao programador seu controle de acesso, velocidade, segurança dos dados e disponibilidade. 13 Saiba Mais A memória do Computador é formada por inúmeros compo- nentes eletrônicos com capacidade de armazenar os dados na forma binária, ou seja, por meio de 0 e 1, denominado BIT. O agrupamento de 8 bits forma 1 BYTE e nele é possível o arma- zenamento de um caractere. Diferentes quantidades de bytes são agrupadas com o objetivo de armazenar tipos diversos de dados e o Sistema só pode manipular os dados se houver iden- tificação que represente o endereço de armazenamento. Assim, o nome que você atribui a um espaço reservado na memória receberá essa identificação e permitirá sua manipulação. Além do uso em Algoritmos de variáveis, é possível que você adote constantes. Uma constante é um dado que não sofre nenhuma alteração no decorrer do tempo, isto é, seu valor é constante do início até o fim da execução do Algoritmo e no tempo. Uma constante das mais conhecidas é o número π, que tem o valor constante de 3.1415926535. As variáveis e as constantes têm um nome que as identifica e que deve ser criado conforme as seguintes regras: • O primeiro caractere deve ser uma letra; • Os nomes devem ser formados por caracteres pertencentes às letras do alfabeto e aos números. Se o identificador for composto por mais de uma palavra, a segunda palavra deve iniciar com o caractere em maiúscula; • Não pode haver espaços em branco no identificador; • Os nomes escolhidos devem ser explicativos do seu conteúdo; • Nomes longos dificultam a codificação e por isso devem ser evitados; • Não utilizar acentuação ou cedilha; • Os nomes das variáveis não podem ser os mesmos de palavras reservadas da Linguagem de Programação que será utilizada. Com essa definição em mente, vamos a outro exemplo. 14 Construir um Algoritmo para calcular a média e verificar se um aluno terá exame, sabendo que a prova tem peso 6,0 e os exercícios 4,0 e o usuário irá digitar de 0 a 10 cada nota: 1. Entrada: (O que preciso?) Constante: • mediaAprovado >= 6,0; • mediaReprovado < 3,0. Variável: • notaProva; • notaExercicio. 2. Processamento: (Como chegar ao que quero?) Corrigir notaProva para peso 6,0 Corrigir notaExercicio para peso 4,0 Somar as notas Se maior que mediaAprovado então aprovado Senão Se verificar menor mediaReprovado então reprovado Senão exame 3. Saída: (O que quero?) • mediaFinal; • Situação – aprovado, exame ou reprovado. Vamos ver como fica a construção do Algoritmo. Colocando a sequência em for- ma de comandos, temos: 15 1. Programa CalculaStatusAluno; 2. {Declaração das Variáveis} 3. variavel real notaProva <-0.0; 4. variavel real notaExercicios <-0.0; 5. variavel real mediaFinal <-0.0; 6. variavel real corrigirNotaProva <-0.0; 7. variavel real corrigirNotaExercicio <-0.0; 8. {Declaração das Constantes} 9. constante real mediaAprovado <- 6,0; 10 constante real mediaReprovado <- 3,0; 11. início 12. escrever “Digite a Nota da Prova:”; 13. ler notaProva; 14. escrever “Digite a Nota dos Exercícios:”; 15. ler notaExercicios; 16. corrigirNotaProva <- notaProva*0,60; 17. corrigirNotaExercicio <- notaExercicio*0,40; 18. mediaFinal<- corrigirNotaProva+corrigirNotaExercicio; 19. se mediaFinal >= mediaAprovado então 20. escrever “Aprovado”; 16 Observe que o Algoritmo ganhou um texto entre { }, que significa a inserção de comentários os quais não influenciam a execução do programa. No final de cada instrução também existe um ponto-e-vírgula (;), cujo objetivo é avisar ao Computador que a instrução acabou e que haverá outra em seguida. O ponto (.) significa o fim do Programa. O Algoritmo na primeira linha atribui um nome para o Programa. Essa estrutura é a representação do processo de refina- mento que recebe o nome de Português Estruturado. Figura 6 – Linguagem de programação Fonte: Freepik#ParaTodosVerem: a imagem mostra uma mão humana que toca com o dedo indicador em uma tela, na qual estão códigos de programação. Fim da descrição. 21. senão 22. se mediaFinal < mediaReprovado então 23. escrever “Reprovado”; 24. senão 25. escrever “Exame”; 26. fimSe 27. fimSe. 17 O Português Estruturado é uma forma de representação de Algoritmos consi- derada por muitos como pseudolinguagem de Programação. Pode ser atribuída por alguns autores como Portugol ou pseudocódigo, que representa a lógica para resolver um problema em uma Linguagem corrente. Para que o Algoritmo rode de forma a se tornar um Programa escrito em Português Estruturado, você deverá refiná-lo, acrescentado os tipos primiti- vos das variáveis, as quais têm de ser definidas segundo o tipo de dados que a receberá. Os tipos podem modificar de acordo com a Linguagem de Programação escolhi- da, mas os tipos básicos de Programação permanecem e são assim especificados: Inteiro Pode armazenar números de qualquer natureza (nulo, positivo ou negativo), desde que pertença ao conjunto dos números intei- ros. São exemplos destes: 20; 0; -125 e 40. Real Pode armazenar qualquer valor pertencente ao conjunto dos nú- meros reais e inteiros (nulo, po- sitivo ou negativo). São exemplos de números inteiros -22,4; 0; 8 e 5,30. Caractere Pode armazenar valores alfanu- méricos e caracteres especiais, por exemplo, “Análise de Siste- mas”, “Rebecca”, “Thaís” e “ok”. Lógico Pode armazenar apenas valores verdadeiro (V) – true ou falso (F) – false. Em resumo, neste texto, exploramos os conceitos fundamentais relacionados à estruturação de algoritmos e à representação em Português Estruturado. Observamos como os comentários e pontos-e-vírgulas são cruciais para a clare- za e a precisão na escrita de algoritmos, e como o ponto final marca o término do programa. Além disso, discutimos a importância de refinarmos os algoritmos, adicionando tipos primitivos às variáveis de acordo com o tipo de dados que elas irão conter. 18 Essa ação é essencial para que o algoritmo se torne um programa eficaz em Português Estruturado. Ainda, destacamos os tipos básicos de programação, como Inteiro, Real, Caractere e Lógico, e como eles são usados para armazenar diferentes tipos de informa- ções. Compreender esses conceitos é um passo fundamental no caminho para se tornar um programador competente e eficiente. 19 Sites Portugol WebStudio O Portugol WebStudio é uma ferramenta on-line que auxilia na aprendiza- gem de programação usando a linguagem Portugol. https://bit.ly/3uNnBMx Portugol – Download Esta é outra ferramenta relacionada ao Portugol, que permite o desen- volvimento de algoritmos e programas, você pode fazer o download da ferramenta por meio deste link: https://bit.ly/4194VTB Livro Fundamentos da Programação de Computadores Este livro é uma valiosa referência para quem deseja aprofundar seus co- nhecimentos em programação. Ele aborda os conceitos fundamentais da programação de computadores. ASCENCIO, A. F. G.; CAMPOS, E. A. V. Fundamentos da Programação de Computadores. Pearson, 2012. Vídeo Portugol – Introdução aos Algoritmos Este é um vídeo de introdução aos algoritmos usando a linguagem Portu- gol. O vídeo fornece uma visão geral do processo de desenvolvimento de algoritmos, o que é fundamental para qualquer pessoa que deseje apren- der a programar. https://www.youtu.be/zflLegafGA Material Complementar 20 1 – Qual das alternativas a seguir define corretamente o conceito de algorit- mo? Assinale a alternativa correta. a. Um algoritmo é uma sequência de instruções que descreve como resolver um problema específico. b. Um algoritmo é uma sequência de comandos que descreve como executar um programa. c. Um algoritmo é uma sequência de passos que descreve como realizar uma tarefa. Autoatividade Atenção, estudante! Veja o gabarito desta autoatividade no fim deste conteúdo. 21 CARBONI, I. de F. Lógica de Programação. São Paulo: Pioneira Thomson Learning, 2003. FORBELLONE, A. L. V.; EBERSPÄCHER, H. F. Lógica de programação: a constru- ção de Algoritmos e estruturas de dados. 3. ed. São Paulo: Prentice Hall, 2005. MAGRI, J. A. Lógica de Programação: ensino prático. São Paulo: Érica, 2003. UCCI, W.; SOUZA, R. L.; KOTANI, A. M. Lógica de programação: os primeiros pas- sos. 2. ed. São Paulo: Érica, 1991. Referências 22 Questão 1 a) Um algoritmo é uma sequência de instruções que descreve como resolver um problema específico. Feedback: a definição correta de algoritmo é aquela que o descreve como uma sequência de instruções que esboça como resolver um problema específico. As demais alternativas não estão corretas, pois descrevem o algoritmo como uma sequência de comandos ou passos, mas não especificam que esses comandos ou passos são instruções para resolver um problema específico. Gabarito Objetivos da Unidade A Necessidade de Pensar Algoritmo Como Construir um Algoritmo Material Complementar Autoatividade Referências Gabarito
Compartilhar