Baixe o app para aproveitar ainda mais
Prévia do material em texto
Fluxo de Controle - Estrutura Sequencial, Entrada e Saída de Dados APRESENTAÇÃO Nesta Unidade de Aprendizagem, falaremos de estruturas sequenciais; para isso, temos que entender o que são computadores. Computadores são máquinas capazes de solucionar problemas, mas que só agem quando recebem intruções nos mínimos detalhes. A tarefa principal dos computadores é o de processar dados, ou seja, receber (entrada de dados), realizar operações (processamento) e gerar respostas (saídas). Você poderá verificar como é feita a organização de um programa computacional, e também poderá entender como é possível resolver um problema por sua forma de visualização do tipo fluxograma, pseudocódigo ou o próprio código. Além disso, outros exemplos de aplicação, inclusive com a programação no MATLAB, serão apresentados. Bons estudos. Ao final desta Unidade de Aprendizagem, você deve apresentar os seguintes aprendizados: Declarar, de maneira correta, os tipos de dados e diferenciar dados de entrada e saída, dentro do ambiente da linguagem MATLAB (.m) e pseudocódigo. • Analisar algoritmos com declaração de variáveis, comandos de entrada e saída.• Aplicar os conceitos de declaração, entrada e saída de dados em algoritmos na solução de problemas, por meio do MATLAB. • INFOGRÁFICO De acordo como verificamos em Forbellone e Eberspacher, 2005, para o fluxo de controle, deve-se utilizar o conceito de estrutura sequencial de fluxo de execução, desenhando o algoritmo por meio de etapas lógicas. Além do conceito de estrutura sequencial de fluxo de execução, pode-se também adotar conceitos de seleção, repetição, e da combinação entre estas. No Infográfico, a seguir, serão apresentadas as etapas da estrutura básica sequencial de um algoritmo. Veja, no fluxograma, como essas etapas podem ser apresentadas. CONTEÚDO DO LIVRO Uma das formas de analisar os algoritmos sem ter que entender o pseudocódigo central é poder analisar o fluxograma desse algoritmo. Muitos programadores experientes não gostam de utilizar fluxogramas para a análise; no entanto, sabe-se que, para a maioria dos programadores, o fluxograma é uma forma amigável de encontrar possíveis problemas de fluxos de estruturas. Neste capítulo, Fluxo de Controle - Estrutura Sequencial, Entrada e Saída de Dados, que faz parte do livro Algoritmo e programação e é base teórica desta Unidade de Aprendizagem, você vai ser apresentado à estrutura de controle sequencial, e à declaração de variáveis em pseudocódigo e em linguagem MATLAB. Além disso, será apresentado o comando de entrada de dados em pseudocódigo (leia) e em linguagem MATLAB (input). Também será demonstrado o comando de saída de dados em pseudocódigo (escreva) e em linguagem MATLAB (disp e fprint). Por fim, será apresentado o conceito de blocos definidos como conjunto de ações. Boa leitura. ALGORITIMO E PROGRAMAÇÃO Fluxo de controle: estrutura sequencial e entrada e saída de dados Objetivos de aprendizagem Ao final deste texto, você deve apresentar os seguintes aprendizados: Declarar de maneira correta os tipos de dados e diferenciar dados de entrada e saída dentro do ambiente da linguagem MATLAB (.M) e pseudocódigo. Analisar algoritmos com declaração de variáveis e comandos de en- trada e saída. Aplicar os conceitos de declaração, entrada e saída de dados em algoritmos na solução de problemas, por meio do MATLAB. Introdução Neste capítulo, você vai ser apresentado à estrutura de controle sequencial e à declaração de variáveis em pseudocódigo e em linguagem MA- TLAB. Além disso, será apresentado o comando de entrada de dados em pseudocódigo (leia) e em linguagem MATLAB (input). Também será demonstrado o comando de saída de dados em pseudocódigo (escreva) e em linguagem MATLAB (disp e fprint). Por fim, será apresentado o conceito de blocos definidos como conjunto de ações. Identificação interna do documento AF6YJKGMHH-NB4JLW1 Tipos de dados e diferenciação de dados de entrada e saída dentro do ambiente da linguagem MATLAB (.M) e pseudocódigo Fluxo de controle Como verifi camos em Forbellone e Eberspacher (2005), para o fl uxo de con- trole, deve-se utilizar o conceito de estrutura sequencial de fl uxo de execução, desenhando o algoritmo por meio de etapas lógicas. Assim, para a criação de algoritmos, temos alguns conceitos a serem utilizados, como: bloco lógico; entrada e saída de dados; variáveis; constantes; atribuições; expressões lógicas; expressões relacionais; expressões aritméticas; blocos definidos como conjunto de ações. Além do conceito de estrutura sequencial de fluxo de execução, pode-se também adotar conceitos de seleção, repetição e combinação entre estas. Definiremos a partir daqui o principal conceito que é a estrutural sequencial. Estrutura sequencial Forbellone e Eberspacher (2005) discutem que a estrutura sequencial de um algoritmo é defi nida por um conjunto de ações sempre em uma forma de sequência linear de cima para baixo e da esquerda para a direita. Demonstra-se na Figura 1 um esquema básico do modelo geral de um algoritmo com estrutura sequencial, em que temos a identificação do bloco, determinando o início e o fim, e internamente se inicia a declaração das variáveis e o corpo do algoritmo. Fluxo de controle: estrutura sequencial e entrada e saída de dados2 Identificação interna do documento AF6YJKGMHH-NB4JLW1 Figura 1. Modelo geral de estrutura sequencial de um algoritmo. Fonte: Forbellone e Eberspacher (2005). Declaração de variáveis em pseudocódigo Para a construção de um algoritmo sequencial, temos que esboçar um bloco contendo todas as variáveis distintas para se executar um algoritmo. Um exem- plo discutido por Forbellone e Eberspacher (2005) é um algoritmo que calcule a média aritmética entre quatro notas bimestrais de um aluno, em que temos: dados de entrada: quatro notas bimestrais (N1, N2, N3 e N4); dados de saída: média aritmética anual (MA). Temos para esse exemplo que a média aritmética é a soma das quatro notas bimestrais dos dados de entrada dividida pela quantidade de notas bimestrais, no caso do exemplo (N1 + N2 + N3 + N4)/4. Assim, demonstra-se na Figura 2 como esse algoritmo poderia ser descrito. Temos o bloco identificado, o início e o fim do algoritmo, a declaração de variáveis apresentada, que são a descrição das notas e da média anual, N1, N2, N3, N4 e MA, respectivamente, a entrada de dados em que aqui apresentamos o comando leia, o processamento de dados e o comando de saída escreva. 3Fluxo de controle: estrutura sequencial e entrada e saída de dados Identificação interna do documento AF6YJKGMHH-NB4JLW1 Figura 2. Exemplo de um algoritmo com fluxo de execução sequencial para calcular a média de notas. Fonte: Forbellone e Eberspacher (2005). Declaração de variáveis em linguagem MATLAB No MATLAB, temos que utilizar algumas funções específi cas para que o programa matemático identifi que o processamento da informação do algoritmo. Partindo do exemplo da Figura 2 da média aritmética e com base na sintaxe básica para chamada de qualquer função do MATLAB, assim como vemos em Matsumoto (2004): [Saída1, …, Saída N]: parâmetros de saída Função: nome da função [Entrada1, …, Entrada N]: parâmetros de entrada Temos, portanto, que no processamento desse algoritmo precisamos escrever a função média como média = sum{Dados de entrada/freq}. Assim, o algoritmo no MATLAB poderia ser descrito como: Fluxo de controle: estrutura sequencial e entrada e saída de dados4 Identificação interna do documento AF6YJKGMHH-NB4JLW1 Assim, teremos como saída de dados: MA = (N1 + N2 + N3 + N4)/4 Algoritmos com declaração de variáveis e comandos de entrada e saída Assim como verifi camos em Chapra (2013), uma programação estruturada e organizada tem seus benefícios, além de tornar o algoritmo mais fácil de ser compartilhado e também ajudando a garantir um desenvolvimento de programa mais efi ciente. Por esse fatode programação estruturada e mais organizada, é fácil analisar, corrigir e testar esses algoritmos, resultando em programas que têm um tempo de desenvolvimento e atualização menor. Assim como verifi - camos no tópico anterior e já tivemos contato com exemplos, a programação estruturada pode ser de três estruturas de controle fundamentais: sequência, seleção e repetição. Se tivermos como base a organização de cada uma dessas estruturas para desenvolver um algoritmo, o código computacional resultante será claro e fácil de seguir e de ser analisado. Posteriormente, podem ser pro- postas melhorias com alterações para serem testadas e colocadas em práticas. Uma das formas de analisar os algoritmos sem ter que entender o pseu- docódigo central é poder analisar o fluxograma desse algoritmo. Conforme discutido em Chapra (2013), muitos programadores experientes não gostam de utilizar fluxogramas para a análise. No entanto, sabe-se que para a maioria dos programadores o fluxograma é uma forma amigável de encontrar possíveis problemas de fluxos de estruturas. Na Figura 3, observa-se os símbolos usados nos diagramas de fluxo. 5Fluxo de controle: estrutura sequencial e entrada e saída de dados Identificação interna do documento AF6YJKGMHH-NB4JLW1 Figura 3. Símbolos usados nos diagramas de fluxo. Fonte: Chapra (2013). Existem, portanto, três formas de identificarmos os algoritmos. Podemos identificá-los por fluxogramas, por pseudocódigos ou pelo próprio código computacional. Nos exemplos das Figuras 1 e 2 do tópico anterior, observamos os blocos do algoritmo descritos na forma de pseudocódigo. O pseudocódigo é uma forma de visualizar o código computacional de uma forma prática sem a exigência do conhecimento de funções internas de programas computacionais, como o MATLAB. Na Figura 4, observa-se a diferença entre o fluxograma e o pseudocódigo para a estrutura sequencial. Fluxo de controle: estrutura sequencial e entrada e saída de dados6 Identificação interna do documento AF6YJKGMHH-NB4JLW1 Figura 4. Tipo de diagramas de análises de algoritmo: (a) Fluxograma, (b) Pseudocódigo. Fonte: Chapra (2013). Declaração de variáveis e dados de entrada e de saída Conforme já demonstrado nas fi guras anteriores e de acordo com a teoria para a criação de estruturas de blocos de algoritmos, temos as seguintes instruções: leia: comando de entrada de dados em pseudocódigo; input: comando de entrada de dados em MATLAB; escreva: comando de saída de dados em pseudocódigo; disp e fprint: comandos de saída de dados em Matlab. Chapra (2013) desenvolve um exemplo de um algoritmo para as raízes de uma equação quadrática (Figura 5), em que temos o seguinte enunciado do problema: 7Fluxo de controle: estrutura sequencial e entrada e saída de dados Identificação interna do documento AF6YJKGMHH-NB4JLW1 Figura 5. Enunciado de problema de descrição de variáveis e dados de entrada e de saída. Fonte: Chapra (2013). Por meio desse enunciado, conseguimos analisar as variáveis e os dados de entrada e de saída, conforme segue: Variáveis: a, b, c, r1, r2. Dados de entrada: input a, b, c. Dados de saída: r1, r2. Observa-se que facilmente se consegue analisar as variáveis, os dados de entrada e de saída e que facilmente os conceitos de declaração e entrada e saída de dados podem ser aplicados em algoritmos na solução de problemas, por meio do MATLAB. Conceitos de declaração e entrada e saída de dados em algoritmos na solução de problemas, por meio do MATLAB Os conceitos de declaração e entrada e saída de dados podem ser facilmente aplicados na construção dos algoritmos por meio do MATLAB. Exemplos foram descritos ao longo deste capítulo e fi cou clara a demonstração das declarações de variáveis, do conjunto de dados de entrada e do que se espera Fluxo de controle: estrutura sequencial e entrada e saída de dados8 Identificação interna do documento AF6YJKGMHH-NB4JLW1 na saída de dados. Além disso, foram demonstrados alguns comandos, como o comando de soma sum utilizado para calcular a média, etc. Como forma básica e teórica para a prática, sugere-se, portanto, três etapas para que o aluno descreva um problema: 1. Desenvolvimento do fluxograma. 2. Desenvolvimento do pseudocódigo. 3. Desenvolvimento do código computacional em MATLAB, etc. Uso da ferramenta MATLAB para declaração de dados De acordo com o aprendizado de entrada e saída de dados, tipos de estruturas e como visualizar os problemas, tem-se vários exemplos no MATLAB para códigos já implementados. Matsumoto (2004) demonstra alguns desses exemplos de aplicações. Um dos exemplos é o dos carros de uma montadora, em que foram produzidos carros do tipo C1 e do tipo C2 e para cada carro referente aos meses de janeiro e de fevereiro houve custos diferenciados e que estão descritos no Quadro 1. Fonte: adaptado de Matsumoto (2006). Tipo de carro / mês Produção em janeiro Produção em fevereiro Carro C1 100 120 Carro C2 200 180 Custo em janeiro Custo em fevereiro Carro C1 R$ 10,00 R$ 9,80 Carro C2 R$ 6,00 R$ 6,10 Quadro 1. Dados do problema de custo de carros. Como questão do problema, a autora solicita que sejam criados no MATLAB duas matrizes representando as tabelas e que seja armazenada a variável m1, como multiplicação escalar das matrizes a e b. 9Fluxo de controle: estrutura sequencial e entrada e saída de dados Identificação interna do documento AF6YJKGMHH-NB4JLW1 Assim, primeiramente e conforme estudado neste capítulo, devemos en- tender quais são os dados de entrada, saída e as variáveis. Então teremos: Dados de Entrada1 (Produções/mês) : [100 120; 200 180] Dados de Entrada2 (Custo de carro/mês) : [10 9.8; 6 6.1] Dados de Saída: a*b Variáveis: a = matriz a; b = matriz b; m1 = variável de multiplicação das matrizes Sendo assim, com esses dados de entrada, saída e variáveis conhecidas poderemos descrever o código computacional, que, segundo Matsumoto (2004), poderá ser determinado de acordo com a Figura 6. Figura 6. Código criado para o exemplo de custos do carro. Fonte: Matsumoto (2004). Outro exemplo de aplicação demonstrado por Matsumoto (2004) é o das 100 pessoas que trabalham em uma empresa de uma pequena ilha e tem os salários de acordo com o Quadro 2. Fluxo de controle: estrutura sequencial e entrada e saída de dados10 Identificação interna do documento AF6YJKGMHH-NB4JLW1 Fonte: adaptado de Matsumoto (2006). Salário Frequência R$ 50,00 30 R$ 100,00 60 R$ 150,00 10 Quadro 2. Exemplo de salários de funcionários de uma empresa de uma pequena ilha. No exemplo dado, observa-se que existe uma frequência de salários. Assim, o autor gostaria de saber qual é a média dos salários das pessoas e qual é a variância e o desvio padrão desses salários. Portanto, para definir o código no programa MATLAB, primeiramente temos que identificar os dados de entrada, os dados de saída e as variáveis do problema. Assim, temos: Dados de Entrada1 (Salário): [50 100 150] Dados de Entrada2 (Frequência): [30 60 10] Dados de Saída1: média Dados de saída2: variância Dados de saída3: desvio padrão (dp) Variáveis: salários, frequência Então, de acordo com Matsumoto (2004), o código pode ser facilmente resolvido, conforme a Figura 7. 11Fluxo de controle: estrutura sequencial e entrada e saída de dados Identificação interna do documento AF6YJKGMHH-NB4JLW1 Figura 7. Código do exemplo de salários de funcionários de uma empresa de uma pequena ilha. Fonte: Matsumoto (2004). Sendo assim, observa-se que facilmente podemos utilizar a entrada de dados utilizando o MATLAB. No entanto, para a entrada de dados, assim como foi discutido anteriormente, existe uma função denominada input, que permite que o usuário forneça dados interativamente. Alguns exemplos com essa ferramenta input podem ser demonstrados, além disso, quando temos a declaração de função, teremos que declarar uma função de saída que, no caso do MATLAB, é chamada de fprint. Sendo assim, Becker et al.(2010) discutem alguns exemplos com essas funções. Pedir que o usuário entre com os coeficientes de um polinômio do segundo grau ax2 + bx + c. Fonte: Becker et al. (2010). Fluxo de controle: estrutura sequencial e entrada e saída de dados12 Identificação interna do documento AF6YJKGMHH-NB4JLW1 Fazer com que o usuário calcule as raízes de um polinômio de segundo grau. Fonte: Becker et al. (2010). BECKER, A. J. et al. Noções Básicas de Programação em MATLAB. Santa Maria: Universidade Federal de Santa Maria, 2010. Disponível em: <http://www.inf.ufsc.br/~bosco.sobral/ ensino/ine5201/Apostila_MATLAB.pdf>. Acesso em: 15 fev. 2018. CHAPRA, S. C. Métodos numéricos aplicados com MATLAB® para engenheiros e cientistas. 3. ed. Porto Alegre: AMGH, 2013. FORBELLONE, A. L. V.; EBERSPACHER, H. F. Lógica de programação: a construção de algoritmos e estruturas de dados. 3. ed. São Paulo: Pearson, 2005. MATSUMOTO, É. Y. MATLAB 7: fundamentos. 2. ed. São Paulo: Érica, 2004. Leituras recomendadas BORATTI, I. C.; OLIVEIRA, A. B. Introdução à programação de algoritmos. 4. ed. Floria- nópolis: Visual Books, 2013. GILAT, A. MATLAB com aplicações em engenharia. 4. ed. Porto Alegre: Bookman, 2012. GILAT, A.; SUBRAMANIAM, V. Métodos Numéricos para Engenheiros e Cientistas: uma introdução com aplicações usando o MATLAB. Porto Alegre: Bookman, 2009. MATHWORKS. 2018. Disponível em: <https://www.mathworks.com>. Acesso em: 11 dez. 2017. 13Fluxo de controle: estrutura sequencial e entrada e saída de dados Identificação interna do documento AF6YJKGMHH-NB4JLW1 MATSUMOTO, É. Y. MATLAB 6.5: fundamentos de programação. São Paulo: Érica, 2002. PALM III, W. J. Introdução ao MATLAB para engenheiros. 3. ed. Porto Alegre: AMGH, 2013. SILVA, N. G. Apostila de MATLAB: versão 0.91. Ouro Branco: Universidade Federal de São João Del Rei, 2013. Disponível em: <https://ufsj.edu.br/portal2-repositorio/File/ prof_ngoulart/apostila/Apostila_Matlab.pdf >. Acesso em: 12 dez. 2017. SOUZA, M. A. F. et al. Algoritmos e lógica de programação. 2. ed. São Paulo: Cengage Learning, 2011. VAROTO, P. S. Tutorial MATLAB: conceitos básicos. São Carlos: USP/Laboratório de Di- nâmica, 2013. Disponível em: <http://www2.eesc.usp.br/labdin/luiz/tutorial_matlab. pdf >. Acesso em: 12 dez. 2017. Fluxo de controle: estrutura sequencial e entrada e saída de dados14 Identificação interna do documento AF6YJKGMHH-NB4JLW1 Identificação interna do documento AF6YJKGMHH-NB4JLW1 Identificação interna do documento AF6YJKGMHH-NB4JLW1 Nome do arquivo: C02_ALgoritomos_Fluxo_controle_sequencial_FINAL_202112101800 228913634.pdf Data de vinculação ao processo: 10/12/2021 18:00 Processo: 515846 DICA DO PROFESSOR O conceito de estrutura sequencial de um algoritmo é definido por meio de comandos de entrada e saída de dados de forma linear de cima para baixo e da esquerda para a direita. Nesta Dica do Professor, você vai aprender a forma correta de como fazer a declaração de variáveis, a entrada de dados, o processamento de dados e a saída de dados utilizando linguagem MATLAB. Gerando, assim, de maneira correta, uma estrutura sequencial. Não deixe de assistir ao vídeo e procure praticar no MATLAB. Conteúdo interativo disponível na plataforma de ensino! SAIBA + Para ampliar o seu conhecimento a respeito desse assunto, veja abaixo as sugestões do professor: Programação de Computadores - Problemas e Algoritmos Neste link, você terá acesso a um vídeo em que é demonstrado o que vem a ser um problema, como solucionar, como analisar um algoritmo, as sub-rotinas, como detalhar o algoritmo e os laços. Conteúdo interativo disponível na plataforma de ensino! Programação de Computadores - Operações Aritméticas e Variáveis Neste link, você terá acesso a um vídeo que trata sobre uma aula de operações aritméticas e variáveis, um ótimo vídeo para identificarmos como os dados e as variáveis atuam dentro do algoritmo. Conteúdo interativo disponível na plataforma de ensino! Estrutura de dados - Lista linear sequencial Neste link você terá acesso a um vídeo que aborda a lista sequencial sobre estrutura de dados. Conteúdo interativo disponível na plataforma de ensino!
Compartilhar