Logo Passei Direto
Buscar

Algotitmo e programação

Ferramentas de estudo

Material
páginas com resultados encontrados.
páginas com resultados encontrados.

Escolha uma das opções e acesse esse e outros materiais sem bloqueio. 🤩

Cadastre-se ou realize login

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

Escolha uma das opções e acesse esse e outros materiais sem bloqueio. 🤩

Cadastre-se ou realize login

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

Escolha uma das opções e acesse esse e outros materiais sem bloqueio. 🤩

Cadastre-se ou realize login

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

Escolha uma das opções e acesse esse e outros materiais sem bloqueio. 🤩

Cadastre-se ou realize login

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

Escolha uma das opções e acesse esse e outros materiais sem bloqueio. 🤩

Cadastre-se ou realize login

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

Escolha uma das opções e acesse esse e outros materiais sem bloqueio. 🤩

Cadastre-se ou realize login

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

Escolha uma das opções e acesse esse e outros materiais sem bloqueio. 🤩

Cadastre-se ou realize login

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

Escolha uma das opções e acesse esse e outros materiais sem bloqueio. 🤩

Cadastre-se ou realize login

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

Escolha uma das opções e acesse esse e outros materiais sem bloqueio. 🤩

Cadastre-se ou realize login

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

Escolha uma das opções e acesse esse e outros materiais sem bloqueio. 🤩

Cadastre-se ou realize login

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

Prévia do material em texto

ALGORITMO E PROGRAMAÇÃO Izabelly Soares de Morais Jeferson Faleiro Leon Maurício de Oliveira Saraiva Adriana de Souza Vettorazzo Ramiro Sebastião Córdova JuniorRevisão técnica: Jeferson Faleiro Leon Graduado em Desenvolvimento de Sistemas Especialista em Formação Pedagógica A396 Algoritmo e programação (engenharia) eletrônico ] / Izabelly Soares de et al.; (revisão técnica: Jeferson Faleiro Leon). Porto Alegre: SAGAH, 2018. ISBN 978-85-9502-473-1 1. Programação. 2. 3. Engenharia de produção. Morais, Izabelly Soares de. CDU 004.43ALGORITMO E PROGRAMAÇÃO Izabelly Soares de Morais Graduada em Ciência da Computação Mestre em Ciência da Computação Jeferson Faleiro Leon Graduado em Desenvolvimento de Sistemas Especialista em Formação Pedagógica Maurício de Oliveira Saraiva Graduado em Ciência da Computação Especialista em Engenharia e Arquitetura de Software Mestre em Computação Aplicada Adriana de Souza Vettorazzo Graduada em Processamento de Dados Especialista em Informática: objetos, sistemas distribuídos e internet Ramiro Sebastião Córdova Junior Bacharel em Ciência da Computação Especialista em Redes de Computadores Mestre em Engenharia de Produção 2018 S a G a HSAGAH EDUCAÇÃO S.A., 2018 Gerente editorial: Arysinha Affonso Colaboraram nesta edição: Editora responsável: Carolina R. Ourique Assistente editorial: Giovana Roza Preparação de original: Marina Waquil Editoração: Kaéle Finalizando Ideias Importante Os links para sites da Web fornecidos neste livro foram todos testados, e seu funcio- namento foi comprovado no momento da publicação do material. No entanto, a rede é extremamente suas páginas estão constantemente mudando de local e conteúdo. Assim, os editores declaram não ter qualquer responsabilidade sobre qualidade, precisão ou integralidade das informações referidas em tais links. Reservados todos os direitos de publicação à SAGAH EDUCAÇÃO S.A., uma empresa do GRUPO A EDUCAÇÃO S.A. Av. Jerônimo de Ornelas, 670 - Santana 90040-340 Porto Alegre RS Fone: (51) 3027-7000 Fax: (51) 3027-7070 São Paulo Rua Doutor Cesário Mota Jr., 63 - Vila Buarque 01221-020 São Paulo SP Fone: (11) 3221-9033 SAC 0800 703-3444 - www.grupoa.com.br É proibida a duplicação ou reprodução deste volume, no todo ou em parte, sob quaisquer formas ou por quaisquer meios (eletrônico, mecânico, gravação, fotocópia, distribuição na Web e outros), sem permissão expressa daAPRESENTAÇÃO A recente evolução das tecnologias digitais e a consolidação da internet modificaram tanto as relações na sociedade quanto as noções de espaço e tempo. Se antes dias ou até semanas para saber de cimentos e eventos distantes, hoje temos a informação de maneira quase instantânea. Essa realidade possibilita a ampliação do conhecimento. No entanto, é necessário pensar cada vez mais em formas de aproximar os estudantes de conteúdos relevantes e de qualidade. Assim, para atender às necessidades tanto dos alunos de graduação quanto das instituições de ensino, livros que buscam essa aproximação por meio de uma linguagem dialógica e de uma abordagem didática e funcional, e que apresentam os principais conceitos dos temas propostos em cada capítulo de maneira simples e concisa. Nestes livros, foram desenvolvidas seções de discussão para reflexão, de maneira a complementar o aprendizado do aluno, além de exemplos e dicas que facilitam o entendimento sobre o tema a ser Ao iniciar um capítulo, leitor, será apresentado aos objetivos de aprendizagem e às habilidades a serem desenvolvidas no capítulo, seguidos da introdução e dos conceitos básicos para que você possa dar continuidade à Ao longo do livro, você encontrar hipertextos que lhe auxiliarão no processo de compreensão do tema. Esses hipertextos estão clas- sificados como: Saiba mais Iraz dicas e informações extras sobre o assunto tratado na seção.6 Apresentação Fique atento Alerta sobre alguma informação não explicitada no texto ou acrescenta dados sobre determinado Exemplo Mostra um exemplo sobre o tema estudado, para que você possa de maneira mais eficaz. Link Indica, por meio de links e códigos QR*, infor- mações complementares que você encontra na web. https://sagah.com.br/ Todas essas facilidades vão contribuir para um ambiente de apren- dizagem dinâmico e produtivo, conectando alunos e professores no processo do conhecimento. Bons estudos! Atenção: para que seu celular leia os códigos, ele precisa estar equipado com câmera e com um aplicativo de leitura de códigos QR. Existem inúmeros aplicativos gratuitos para esse fim, dis- poníveis na Google Play, na App Store e em outras lojas de aplicativos. Certifique-se de que o seu celular atende a essas especificações antes de utilizar osSUMÁRIO Introdução a algoritmos e lógica de programação 9 Jeferson Faleiro Leon Conceitos de lógica de programação 9 Tipos de dados (primitivos) 11 Expressões lógicas 15 Fluxo de controle: estrutura sequencial e entrada e saída de dados 21 Jeferson Faleiro Leon Tipos de dados e diferenciação de dados de entrada e saída dentro do ambiente da linguagem MATLAB (M) e pseudocódigo 22 Algoritmos com declaração de variáveis e comandos de entrada e saída 25 Conceitos de declaração e entrada e saída de dados em algoritmos na solução de problemas, por meio do MATLAB 28 Fluxo de controle: estruturas de decisão 35 Izabelly Soares de Morais Estruturas de decisão 35 Aplicações práticas das estruturas de controle 39 Exemplos de uso das estruturas de controle 45 Estruturas de repetição 51 Izabelly Soares de Morais Estruturas de repetição: conceitos 51 Aplicações práticas das estruturas de repetição 54 Exemplos de uso das estruturas condicionais 57 Variáveis indexadas (vetores) 61 de Saraiva Estruturas de dados de uma dimensão (vetores) em pseudocódigo e linguagem MATLAB 61 Algoritmos com estruturas de dados homogêneas (vetores) em pseudocódigo e linguagem MATLAB 64 Estruturas de dados homogêncas (vetores) na solução de problemas 678 Sumário Variáveis indexadas (matrizes) 75 Maurício de Saraiva Estruturas de dados de duas dimensões (matrizes) em pseudocódigo e linguagem MATLAB 75 Algoritmos com estruturas de dados homogêneas (matrizes) em pseudocódigo e linguagem MATLAB 78 Estruturas de dados homogêneas (matrizes) na solução de problemas 82 Funções 89 Adriana de Souza Vettorazzo o que é uma sub-rotina? 89 Como criar uma sub-rotina 90 Funções com argumentos 94 Gráficos 101 Ramiro Sebastião Córdova Júnior Sistemas gráficos 2D e 3D 101 Plotagem de gráficos 107 Solução de problemas com gráficos 115Introdução a algoritmos e lógica de programação Objetivos de aprendizagem Ao final deste texto, você deve apresentar os seguintes vitmos e sua lógica de os tipos de dados na de a e na de Operar de forma correta os tipos de dados e suas Introdução Neste você estudará o conceito de lógica, verá o que é um algoritmo e como ele está relacionado com a Além disso, aprenderá a identificar e definir o que são tipos de dados, operadores aritméticos, operadores relacionais, operadores lógicos, expressões aritméticas e expressões Conceitos de lógica de programação A lógica não tem uma definição específica: inicialmente, era ligada à ma- temática (lógica formal) e, atualmente, está relacionada a todas as áreas do conhecimento humano. Podemos relacionar a lógica com a "correção do pensamento", pois uma de suas preocupações é determinar quais operações são válidas e quais não são, fazendo análises das formas e leis do pensamento. Como filosofia, ela procura saber por que pensamos assim e não de outro como arte ou técnica, ela nos ensina a usar corretamente as leis do pensamento 2005).10 Introdução a algoritmos e lógica de programação Algoritmos Para Forbellone e Ebersoacher (2005), algoritmo é um conjunto finito de regras, bem definidas, que nos levam à solução de um problema em um tempo finito. Segundo Berg e Figueiró (2002), algoritmo é a descrição de um conjunto de ações que, obedecidas, resultam numa sucessão finita de passos, atingindo o objetivo. Para que se tenha um algoritmo, é preciso: a) que se tenha um número finito de passos; b) que cada passo esteja precisamente definido, sem possíveis ambiguidades; c) que existam zero ou mais entradas; d) que existam uma ou mais saídas; e) que exista uma condição de fim, sempre atingida em tempo finito, para quaisquer entradas. Os algoritmos são criados e reconhecidos por sua lógica de programação. Segundo Forbellone e Eberspacher (2005), a lógica está relacionada à coerência e à racionalidade; lógica de programação é a racionalização dos processos formais da programação de computadores e algoritmo é a sequência de passos que visam atingir um objetivo bem definido. Os algoritmos podem ser visualizados por meio de um fluxograma convencional ou por meio de um fluxograma do tipo Chapin. Forbellone e Eberspacher (2005) fornecem um exemplo básico da diferença entre ambos e destacam que há uma série de vantagens e desvantagens para cada um desses fluxogramas. Por exemplo, o fluxograma convencional é mais fácil de desenhar e é previsto em etapas, enquanto o fluxograma Chapin pode compactar as perguntas de F e V ou S e N em somente um bloco, sendo considerado mais técnico e formal. Na Figura 1, você pode observar essas diferenças.Introdução a algoritmos e lógica de programação 11 para o prizeiro socuetes F testados 10 y o não escada colocar escada do buscar para o soquete o Interruptor testados12 Introdução a algoritmos e lógica de programação dado? Dados são códigos que constituem a matéria-prima da informação, ou seja, é a informação não tratada que ainda não apresenta relevância. A informação é constituída pelos dados tratados - o resultado do processa- mento de dados são as informações. As informações têm significado e podem contribuir no processo de tomada de decisões. Os dados podem ser classificados conforme seu tipo e os principais serão descritos a seguir. Tipos numéricos Inteiros: é um número que não possui casas decimais; por exemplo, a idade de uma pessoa ou uma quantidade de itens num estoque. Real: é um número que possui casas decimais, ou seja, é um número fracionário; por exemplo, a altura de uma pessoa ou o peso de um determinado produto. Tipos alfanuméricos Literal ou String: são os textos, que podem conter letras, números e caracteres especiais. Não são utilizados para cálculos. Tipos lógicos Booleano: é um dado que só pode conter 2 informações (verdadeiro ou falso). Expressões Expressões, no sentido matemático, são representações simbólicas de sequ- ências de operações a serem feitas sobre determinados operandos visando a obtenção de um resultado. Necessitam-se de dois tipos de expressões para a elaboração de algoritmos: expressões aritméticas e expressões lógicas.Introdução a algoritmos e lógica de programação 13 Expressões aritméticas Expressões aritméticas são aquelas cujos operadores são aritméticos e cujos operandos são constantes e/ou variáveis do tipo numérico (inteiro ou real). Operadores aritméticos Soma + Divisão / Quociente da divisão inteira Div Radiciação // Subtração - Multiplicação Resto da divisão inteira Mod Exemplo 10 div 3 = 3 10 mod 3 = 1 3 div 5 = 0 25 div 5 = 5 25 mod 5 = 3 mod 5 = 3 10 3 9 3 1 10 mod 3 10 div 314 Introdução a algoritmos e lógica de programação Funções matemáticas Função Descrição Exemplo sqr (x) Quadrado de (x2) (x) Raiz quadrada de (25)=5 sen (x) Seno de sen (x) Cosseno de cos tg (x) langente de tg (45)=1 int (x) Parte inteira de int frac (x) Parte fracionária de frac =49 pot (x,y) na potência y (xy) pot abs (x) Valor absoluto de abs Sinal (x) Fornece o valor +1 ou zero conforme o Sinal (-44) valor de seja negativo, positivo pu Precedência entre os operadores parênteses mais internos funções matemáticas / + - Os operadores de mesma precedência na tabela são resolvidos da esquerda para a direita, na ordem que aparecerem na expressão.Introdução a algoritmos e lógica de programação 15 Exemplo 5+9+7+8/4 5+9+7+2=23 1-4-3/6-2-3 1-4-3/6-8 -12/6-8 3-2-4/2+ abs 3-2-4/2+ 2 3-2-4/2+ abs (-10) / 2 9-4/2+10/2 9-2+5=1 Expressões lógicas Expressões lógicas são aquelas cujos operadores são lógicos e/ou relacionais e cujos operandos são relações e/ou constantes e/ou variáveis de tipo lógico. resultado de uma expressão lógica sempre é uma constante lógica (F - falso ou V - verdadeiro). Operadores relacionais Igual Diferente > Maior >= Maior ou igual16 Introdução a algoritmos e lógica de programação Exemplo 2+1>=18-15 Operadores lógicos Símbolo Função E Conjunção Ou Disjunção (não-exclusiva) Não Negação O operador lógico E é utilizado quando dois ou mais relacionamentos lógicos de uma determinada condição necessitam ser verdadeiros. O operador lógico E faz com que somente seja executada uma determinada operação se todos as condições mencionadas forem simultaneamente verdadeiras, gerando, assim, um resultado lógico verdadeiro. Exemplo SE (NÚMERO > = 20) E (NÚMERO Então, escrever "Número válido no Se NÃO, escrever "Número inválido, não está no intervalo" Fim-SEIntrodução a algoritmos e lógica de programação 17 operador lógico OU é utilizado quando pelo menos um dos relaciona- mentos lógicos (quando houver mais de um relacionamento) de uma condição necessita ser verdadeiro. operador lógico OU faz com que seja executada uma determinada operação se pelo menos uma das condições mencionadas gerar um resultado lógico verdadeiro. Exemplo SE (SEXO = OU (SEXO = Então, escrever "O seu sexo é Se não, escrever seu sexo é O operador lógico NÃO é utilizado quando se necessita estabelecer que uma determinada condição dever ser não verdadeira ou deve ser não falsa. operador lógico NÃO se caracteriza por inverter o estado lógico de uma condição, isto é, inverte o resultado lógico da condição. Exemplo Algoritmo Var A, B, X: Inteiro Inicio Ler (X,A,B) SE NÃO Então (A + B) Se não C: = (A - B) Fim-SE Escrever (C)18 Introdução a algoritmos e lógica de programação Tabelas verdade Tabela verdade é o conjunto de todas as possibilidades combinatórias entre os valores de diversas variáveis lógicas, as quais se encontram em apenas duas situações, e um conjunto de operadores lógicos. Operador E A B V E V H E Operador OU A B A ou B V V F F Operador NÃO A A não BPrioridades Entre operadores lógicos: Não e ou Entre todos os operadores: parênteses mais internos funções matemáticas operadores aritméticos operadores relacionais operadores lógicos Referências BERG, J. Lógica de programação. 3. ed. Canoas: Ed. ULBRA, 2002. FORBELLONE, A. L. H.F. Lógica de programação: a construção de algoritmos e estruturas de 3. ed. São Paulo: Pearson, 2005. Leituras recomendadas CHAPRA, S. Métodos numéricos aplicados com para engenheiros e 3. ed. Porto Alegre: AMGH, 2013. OLIVEIRA, A. B.; BORAI LC Introdução à programação de algoritmos. Visual Books, 2004. SOUZA, M. A. F. et al. Algoritmos e lógica de programação. 2. ed. São Paulo: Cengage, 2012.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 Aplicar os conceitos de declaração, entrada e saída de dados em algoritmos na solução de problemas, por meio do 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.22 Fluxo de controle: estrutura sequencial e entrada e saída de dados 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 verificamos em Forbellone e Eberspacher (2005), para o fluxo de con- trole, deve-se utilizar o conceito de estrutura sequencial de fluxo 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 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 é definida 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 dados 23 ALGORITMO 3.1 Modelo geral 1. inicio // identificação do do bloco correspondente algoritmo 2. 3. // declaração de varióveis 4. 5. // corpo do algoritmo 6. ação 1; 7. ação 2; 8. ação 3; 9. 10. 11. 12. ação n; 13. 14. fim. // do Figura 1. Modelo geral de estrutura sequencial de um algoritmo. Fonte: Forbellone e Eberspacher 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 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 + 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.24 Fluxo de estrutura sequencial e entrada e saída de dados ALGORITMO 3.2 Média aritmética 1. inicio // começo do 2. 3. // declaração de 4. real: N1, N2, N3, N4, notas bimestrois 5. MA: // anual 6. 7. // entrado de dados 8. leia N2, N3, N4) : 9. 10. // processomento 11. MA (N1 + N2 + N3 + N4) / 4; 12. 13. // de dados 14. escreva (MA) 15. 16. fin. // término do algoritmo Figura 2. Exemplo de um algoritmo com fluxo de execução sequencial para calcular a média de notas. Fonte: Forbellone e Eberspacher Declaração de variáveis em linguagem MATLAB No MATLAB, temos que utilizar algumas funções específicas para que o programa matemático identifique 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): Saida N] = Entrada Saída N]: parâmetros de saída Função: nome da função 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 dados 25 % Criar vetor para inserir as notas himestrais dos alunos >>medias=[N1 N2 N3 Medias N1 N2 N3 N4 vetor para representar número de frequências ou notas >> freq=[4] Freq 4 % Calcular a media ponderada anual MA >>MA 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 verificamos 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 eficiente. Por esse fato de 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 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 Na Figura 3, observa-se os símbolos usados nos diagramas de fluxo.26 Fluxo de estrutura sequencial e entrada e saída de dados SÍMBOLO NOME FUNÇÃO Terminal Representa o e o final do programa. Linhas de fluxo Representa o fluxo da Os morros nas flechas horizontais indicam cruzamento sem que haja conexão com o fluxo Processos Representa cálculos ou manipulação de Entrada/saida Representa entrada ou de dados e Decisão Representa uma comparação, questão, ou decisão que determina caminhos alternativos a serem Junção Representa a confluência de linhas de Conector Representa uma quebra que é continuada em outra de página Contadores Usado para ciclos que por um número predeterminado controladores de de laços 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 estrutura sequencial e entrada e saída de dados 27 Instrução Instrução4 (a) Fluxograma (b) Pseudocódigo Figura 4. Tipo de diagramas de análises de algoritmo: (a) Fluxograma, (b) Fonte: Chapra (2013). Declaração de variáveis e dados de entrada e de saída Conforme já demonstrado nas figuras 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 escreva: comando de saída de dados em pseudocódigo; disp e fprint: comandos de saída de dados em pseudocódigo. 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:28 Fluxo de controle: estrutura sequencial e entrada e saída de dados para as Raízes de uma Equação Quadrática Enunciado do As raízes de uma equação quadrática ax2 + bx + = 0 podem ser determinadas com a fórmula quadrática, = (2.1) X2 2a Desenvolva um algoritmo que faça o seguinte: Passo 1: os e Passo 2: evilando qualquer eventualidade (por exemplo, evitando divisão por zero e permitindo complexas). Passo 3: Mostro a isto os valores de Passo 4: opção de passo 1 e repetir o processo. Figura 5. Enunciado de problema de descrição de variáveis e dados de entrada e de 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. rl. r2. Dados de entrada: input a, b, Dados de saída: rl, 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 ficou clara a demonstração das declarações de variáveis, do conjunto de dados de entrada e do que se esperaFluxo de controle: estrutura sequencial e entrada e saída de dados 29 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 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. Quadro 1. Dados do problema de custo de carros. Produção em Tipo de carro / mês Produção em janeiro fevereiro Carro C1 100 120 Carro C2 200 180 Custo em janeiro Custo em fevereiro Carro C1 R$ 10,00 9,80 Carro C2 6,00 6,10 Fonte: adaptado de Matsumoto 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 ml, como multiplicação escalar das matrizes a e b.30 Fluxo de controle: estrutura sequencial e entrada e saída de dados Assim, primeiramente e conforme estudado neste capítulo, devemos en- tender quais são os dados de entrada, saída e as Então teremos: Dados de Entradal (Produções/mês) : [100 120; 200 180] Dados de Entrada2 (Custo de carro/mês) : Dados de Saída: a*b Variáveis: a = matriz a; b matriz b; ml = 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. a= 120; 200 100 120 200 180 >> b= [10 9.8; 6 b = 10.0000 9.8000 6.0000 6.1000 % Solucao do item II >> ml 1000 1176 1200 1098 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 dados 31 Quadro 2. Exemplo de salários de funcionários de uma empresa de uma pequena Salário Frequência R$ 50,00 30 100,00 60 150,00 10 Fonte: adaptado de Matsumoto (2006). 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 Entradal (Salário): [50 100 150] Dados de Entrada2 (Frequência): Dados de Saídal: média Dados de saída2: variância Dados de saida3: 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.32 Fluxo de estrutura sequencial e entrada e saída de dados % Criar para representar os salarios 100 1501 salarios 50 100 150 Criar vetor para representar as frequencias freq= 130 60 30 60 10 % Calcular a media ponderada media media - 90 (variancia) dp 30 Figura 7. Código do exemplo de salários de funcionários de uma empresa de uma pequena 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 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 Exemplo Pedir que o usuário entre com os coeficientes de um polinômio do segundo grau ax2 + bx + disp programa lerá valores para on coeficientes a, b de polinômio do segundo a=input o valor de a: b-input o valor de b: c-input o valor de C: polinômio definido pelo usuário é + Becker et al. (2010).Fluxo de controle: estrutura sequencial e entrada e saída de dados 33 Exemplo Fazer com que o usuário calcule as raizes de um polinômio de segundo grau. disp programa irá calcular as raizes de um polinômio de segundo a=input com o primeiro coeficiente b=input com o segundo coeficiente o terceiro coeficiente x1 (-b / x2 (-b + / raizes são: e Fonte: Becker et Referências BECKER, Noções Básicas de Programação em Santa Maria: Universidade Federal de Santa Maria, 2010. Disponível em: Acesso em: 15 fev. 2018. CHAPRA, S. C Métodos numéricos aplicados com para engenheiros e 3. ed. Porto Alegre: AMGH, 2013. FORBELLONE, A. L H. Lógica de programação: a construção de algoritmos e estruturas de 3. São Paulo: Pearson, 2005. 2. São Paulo: 2004. Leituras recomendadas BORAI OLIVEIRA, A. B. Introdução à programação de 4. ed. Visual Books, 2013. A. MAILAB com aplicações em 4. ed. Porto Alegre: Bookman, 2012. Métodos Numéricos para Engenheiros e Cientistas: uma introdução com aplicações usando o Porto Alegre: Bookman, 2009. 2018. Disponível em: Acesso em: 11 2017.34 Fluxo de controle: estrutura sequencial e entrada e saída de dados E. Y MAILAB fundamentos de programação. São Paulo: 2002. PALM III, W.J. Introdução MAILAB para 3. Porto Alegre: AMGH, 2013. N. G. Apostila de MAILAB: versão Ouro Branco: Universidade Federal de São João Del Rei, 2013. Disponível em: Acesso em: 12 dez. 2017 M. A. F. et al. Algoritmos e lógica de programação. 2. ed. São Paulo: Cengage Learning, 2011. P.S. lutorial conceitos São Carlos: USP/Laboratório de Di- nâmica, 2013. Disponível em: pdf Acesso em: 12 2017.Fluxo de controle: estruturas de decisão Objetivos de aprendizagem Ao final deste texto, você deve apresentar os seguintes aprendizados: Analisar os algoritmos com estruturas condicionais simples e/ou com- postas em pseudocódigo e linguagem MATLAB (M). Identificar problemas que necessitem de estruturas condicionais simples e/ou compostas. Desenvolver algoritmos em pseudocódigo e linguagem MATLAB que necessitem estruturas condicionais simples e/ou compostos na resolução de problemas. Introdução Você já parou para pensar que em nosso cotidiano temos que tomar diversas decisões, seja sobre a roupa que iremos utilizar ou o que vamos almoçar ou jantar? Estas são situações em que devemos analisar as condições para que possamos escolher uma delas. Praticamente escolhemos a que é mais viável com nossa situação atual. Esse mesmo processo ocorre quando estamos elaborando um algoritmo que deverá solucionar algum problema computa- cional e que em algum momento haverá mais de uma condição disponível. Neste capítulo, estudaremos sobre os conceitos e as particularidades das estruturas de controle, as quais podem ser denominadas como simples, compostas e Veremos também a diferença entra suas senten- ças e exemplos práticos por meio de pseudocódigo e linguagem MATLAB. Estruturas de decisão Quando lidamos com situações comuns em nosso cotidiano, quase sempre nos deparamos com uma dúvida em relação a algo. Seja a respeito da nossa roupa, do nosso almoço ou até mesmo de qual caminho iremos seguir para ir até o36 Fluxo de estruturas de decisão trabalho ou a faculdade. Você já imaginou como seria se só tivéssemos uma única opção para cada atividade? Nossa vida seria provavelmente um pouco Dentro desse contexto, imagine se cada software fosse responsável por solucionar um único problema por vez. Por exemplo, caso fosse utilizar uma calculadora, teria que ter um programa para realizar a soma, outro para re- alizar a subtração, outro para a multiplicação, outro para a divisão e assim por diante. Com a quantidade de aplicativos que utilizamos hoje em dia, não haveria memória que comportasse essa quantidade absurda de softwares. As estruturas condicionais, como o próprio nome já diz, nos dá a possi- bilidade de analisarmos condições, para que a partir dessa análise possamos dar instruções para que o programa execute. Perceba que estamos falando de software, sistemas, dessa forma, se falarmos utilizando nossa linguagem com o computador, ele claramente não irá compreender. Utilizaremos aqui o MATLAB, que, conforme Chapra (2013, p. 41), "é um software que fornece ao usuário um ambiente adequado à realização de diversos tipos de cálculos; além disso, contém ferramentas bastante úteis para implementação de métodos numéricos". No nosso contexto ele será utilizado para exemplificarmos os conceitos que forem vistos. De acordo com Palm (2013, p. 160), a programação estruturada é uma técnica para o projeto de programas em que uma hierarquia de módulos é utilizada, cada um tendo uma única entrada e um único ponto de e em que o controle é passado de cima para baixo através da sem ramificações incondicionais para os níveis mais altos. Ainda sob o ponto de vista do autor, a programação estruturada, se utilizada adequadamente, resulta em programas fáceis de serem escritos, entendidos e modificados. As vantagens da programação estruturada são as seguintes: 1. Os programas estruturados são mais fáceis de serem escritos porque o programador pode primeiramente estudar o problema como um todo e lidar com os detalhes 2. Os módulos (funções) escritos para uma aplicação podem ser utilizados em outras aplicações (isso é chamado de código reutilizável). 3. Os programas estruturados são mais fáceis de debugar porque cada módulo é projetado para realizar apenas uma tarefa, assim, ele pode ser testado separadamente dos outros módulos.Fluxo de controle: estruturas de decisão 37 4. A programação estruturada é eficaz num ambiente de trabalho em equipe porque diversas pessoas podem trabalhar em um programa comum, cada pessoa desenvolvendo um ou mais módulos. 5. Os programas estruturados são mais fáceis de serem entendidos e modificados, especialmente se nomes significativos são escolhidos para os módulos e se a documentação identifica com clareza a tarefa de cada O autor ainda complementa essas informações trazendo algumas outras questões, tais como a utilização de uma língua natural, como o português, para descrever algoritmos, resultando frequentemente em uma descrição verborrágica e sujeita a erros de interpretação. Para evitar lidar imediatamente com a sintaxe possivelmente complicada da linguagem de programação, podemos utilizar um pseudocódigo, no qual uma língua natural e expressões matemáticas são utilizadas para construir sentenças que se parecem com sentenças computacionais, mas sem a sintaxe detalhada. pseudocódigo também pode utilizar alguma sintaxe simples do MATLAB para explicar a operação do programa. "O pseudocódigo é útil para esboçar um programa antes de o código ser escrito detalhadamente, o qual leva mais tempo para ser escrito, porque precisa estar em conformidade com as regras estritas do MATLAB" (PALM, 2013, p. 151). Antes de falarmos sobre as estruturas, é relevante sabermos que diversos conceitos matemáticos são utilizados, já que o universo do algoritmo está envolto da solução de problemas, utilizando muitas vezes a lógica A Tabela 1, a seguir, traz os operadores relacionais utilizados. Tabela 1. Operadores Operador relacional Descrição38 Fluxo de controle: estruturas de decisão Além deles, fazemos uso também dos operadores lógicos, conforme se observa na Tabela 2. Tabela 2. Operadores lógicos. Operador lógico Nome Descrição & Age em dois operandos (A, B). Se Exemplo: A&B AND ambos forem verdadeiros, o resultado será verdadeiro (1). De outro modo, o resultado será falso (0). Age em dois operandos (A, B). Se um dos Exemplo: OR operandos for verdadeiro, ou se ambos forem verdadeiros, o resultado será verdadeiro (1). De outro modo (ou seja, ambos falsos), o resultado será falso (0). Age em um operando (A). Resulta na Exemplo: -A NOI negação do operando: verdadeiro (1), se o operando for falso, e falso (0), se operando for verdadeiro. Fonte: Gilat (2012). As estruturas de decisão trazem dois contextos, o primeiro é o de que a execução do programa só irá continuar, caso a condição analisada seja verdadeira, neste caso utilizamos a estrutura condicional simples, já que só teremos uma condição para analisar, e consequentemente uma instrução, ou um único bloco de instruções para serem executados. outro cenário se difere do primeiro, porque teremos uma instrução para ser executada tanto para caso a condição seja verdadeira quanto para caso seja falsa. A estrutura que possibilita que isso aconteça é a estrutura condicional composta. Além disso, temos a possibilidade de fazer a análise de mais de uma condição. Isso pode ocorrer por diversos motivos, um deles é: caso a primeira condição seja falsa e queiramos testar uma outra condição, estamos falando da estrutura que chamamos de encadeada, mas que no geral é uma estrutura composta encadeada. Veremos a seguir como elas podem ser utilizadas.Fluxo de estruturas de decisão 39 Fique atento MAILAB utiliza janelas (windows) principais (CHAPRA, 2013): Command utilizada para inserir comandos e dados. Graphics window: utilizada para exibir Edit window: utilizada para criar e editar arquivos-M (M-files ou programa/funções do MAILAB). Aplicações práticas das estruturas de controle Como citamos anteriormente, as estruturas condicionais se diferem conforme as possibilidades de execução dos trechos de código após a análise da condição. Exis- tem estruturas condicionais simples, compostas e encadeadas, descritas a seguir. Estrutura de controle simples A estrutura condicional simples tem um bloco de instruções para serem execu- tadas apenas caso a condição analisada seja verdadeira. Observe, na Figura 1 a seguir, como essa informação pode ser visualizada em forma de fluxograma. Verdadeira Condição Bloco de Instruções Falsa Figura 1. Fluxograma da estrutura condicional Devemos ter em mente que um fluxograma é utilizado para representar de maneira ilustrativa os possíveis caminhos que a execução de um software pode levar, ou seja, ele auxilia a compreensão da solução do problema e é útil para que seja elaborado antes do processo de codificação do programa, pois é muito mais simples alterar um fluxograma do que toda a codificação de um programa.40 Fluxo de controle: estruturas de decisão Imagine que você gostaria muito de adquirir um novo carro. Portanto, se você tiver dinheiro, você conseguirá comprar o carro; se você não tiver o dinheiro, você não comprará o carro e esse contexto deixa de existir. Observe que você só conseguirá comprar o carro se a condição de você ter dinheiro disponível for Como essa situação poderia ser exemplificada em forma de fluxograma? Veja na Figura 2, a seguir. Verdadeira Dinheiro Comprarei um carro! Falsa Figura 2. Fluxograma de um exemplo de uso da estrutura condicional Dessa forma, podemos notar que o bloco de instruções só é executado se a condição for atendida, ou seja, verdadeira. Ai você pode se perguntar: mas e se a condição analisada for falsa? Se ela for falsa, o programa termina a execução desse trecho de código e, dessa forma, as instruções após o end serão executadas sequencialmente ou finalizadas. Vamos representar esse contexto primeiramente utilizando uma linguagem natural, ou seja, nossa linguagem do cotidiano: se (condição) Inst ruções a serem executadas (caso a condição seja atendida) fim Quando utilizamos uma linguagem de programação, devemos seguir uma sintaxe. Nas estruturas de controle, utilizamos a palavra reservada (ou sentença) if, que quando traduzida para o português significa "se", e end, que significa a finalização do bloco de instruções da estrutura de controle, ou seja, em complemento ao uso dessa palavra temos a seguinte sintaxe, que é utilizada na estrutura de controle simples:Fluxo de controle: estruturas de decisão 41 if (condição) Instruções a serem executadas (caso a condição seja atendida) end Mostramos o exemplo citado em um fluxograma. Agora, como ele poderia ser representado utilizando a sintaxe anterior? Vamos supor que o valor do carro é de R$ 30.000,00, ou seja, essa será a condição para que possamos comprar o carro. Veja como fica: if dinheiro >= 30000 disp um carro! end Já que nosso exemplo diz que o carro custa R$ 30.000,00, utilizamos na condição o operador relacional porque utilizando apenas o sinal de "maior que", não abrangeria o valor de R$ 30.000,00, e se tivéssemos só esse valor, sem nenhum valor a mais, a condição já estaria falsa. Por isso, colocamos o sinal de igualdade também, pois, caso tenhamos também esse valor, a condição será válida. Estrutura de controle composta e encadeada Falamos até agora apenas da possibilidade de termos um retorno, que, no caso, é a execução de instruções somente se a condição for verdadeira, mas e se houver a necessidade de ter um retorno caso ela seja falsa? Para isso, utilizamos a estrutura de controle composta. A Figura 3 traz a representação de um fluxograma dessa Verdadeira Falsa Condição Bloco de Instruções Bloco de Instruções para caso a condição para caso a condição seja verdadeira seja falsa Figura 3. Fluxograma da estrutura condicional composta (else).42 Fluxo de controle: estruturas de decisão Vamos continuar com nosso exemplo de que você quer comprar o carro. Nesse novo contexto, temos uma nova condição. Portanto, se você tiver di- nheiro, você conseguirá comprar o carro, e caso você não tenha dinheiro para comprar o carro, você irá iniciar uma poupança para juntar dinheiro, ou seja, se você não tiver o dinheiro, você não comprará o carro, mas o contexto não deixa de existir, já que você tem uma segunda opção, que é abrir a poupança. Como essa nova situação poderia ser exemplificada em forma de fluxograma? Veja na Figura 4. Verdadeira Dinheiro Falsa >=30000? Abrirei uma Comprarei um carro poupança Figura 4. Fluxograma da estrutura condicional composta (else). Por meio do fluxograma, podemos observar que temos a possibilidade de obter mais de um retorno. Com isso, nossa sintaxe recebe novos comandos (sentenças). Além do if, temos também o else, que significa "senão", e o elseif, utilizado se a condição do else não for atendida e tivermos outra condição para ser analisada. A utilização fica da seguinte forma: se (condição) Instruções a serem executadas (caso a condição seja verdadeira) senão Instruções a serem executadas (caso a condição seja falsa) fimFluxo de estruturas de decisão 43 Os blocos de comando que fazem uso dessa sentença são denominados de encadeados. Já o pseudocódigo utilizando o elseif fica desta forma: se (condição 1) Instruções a serem executadas (caso a condição 1 seja verdadeira) senão se (condição 2) Instruções a serem executadas (caso a condição 2 seja verdadeira) senão Instruções a serem executadas (caso a condição 1 e a condição 2 sejam falsas) : fimse fim E utilizando a sentença elseif fica desta forma: if (condição 1) disp (Instruções a serem executadas (caso a condição seja verdadeira) : elseif (condição 2) disp (Instruções a serem executadas (caso a condição 2 seja verdadeira) : end Saiba mais Muitas vezes, devemos tentar tornar nosso código mais Podemos utilizar alguns meios para realizar tal artimanha, como a mostrada no exemplo a if condição if condição lógica 2 Instruções para serem executadas caso as condições 1 e 2 sejam end Essas sentenças podem ser substituidas por um programa mais conciso, com o uso dos operadores lógicos, por if condição lógica 1 & condição lógica 2 Instruções para serem executadas caso as condições 1 e 2 sejam verdadeiras: end44 Fluxo de estruturas de decisão A sentença elseif já traz também outra representação do fluxograma, como observa-se na Figura 5. Verdadeira Falsa Condição 1 Bloco de Instruções para caso a condição 1 Verdadeira Falsa Condição seja verdadeira 2 Bloco de Instruções Bloco de Instruções para caso a condição 2 para caso a condição 2 seja verdadeira seja falsa Figura 5. Fluxograma da estrutura condicional composta encadeada (elseif). Porém, você pode, ainda, pensar o seguinte: que você pode não ter dinheiro para comprar o carro, mas o dinheiro que você tem é suficiente para você adquirir uma moto, então, por que essa condição não surgiu no fluxograma, em vez de criar a poupança? Se tivéssemos feito isso, nosso algoritmo não estaria totalmente correto, porque, se a condição não for atendida, a instrução seria executada, mas e se você não tivesse nenhum dinheiro? Como iria comprar a moto? E se não tivesse dinheiro suficiente? Porém, há um modo de analisar essas condições. Vamos supor que uma moto custe mais que R$ 5.000,00 e menos que R$ 10.000,00. Dessa vez, faremos a demonstração utilizando a sintaxe da linguagem e aproveitaremos para utilizar os operadores lógicos: If (dinheiro >=30000) disp um elseif (dinheiro >=5000) (dinheiroFluxo de controle: estruturas de decisão 45 Nesse caso, observe que quando utilizamos as sentenças do MATLAB não precisamos utilizar um end para o elseif, como foi demonstrado quando utilizamos o pseudocódigo. Utilizamos o operador lógico e(&), pois caso você tenha entre R$ 5.000,00 e R$ 10.000,00, você conseguirá adquirir a moto. A estrutura composta encadeada traz a possibilidade de mais de uma condição ser analisada. Não pense você que só podemos utilizar com duas condições. limite das condições a serem analisadas depende muito do projeto, ou seja, do que o software irá precisar para solucionar o problema. Saiba mais Além das estruturas de controle, existem também as estruturas sequenciais, as quais são executadas seguindo uma certa ordem. As estruturas de repetição, muitas vezes chamadas também de iterativas, repetem a execução de um bloco de instruções até que certa condição seja atendida. Exemplos de uso das estruturas de controle Agora que já conhecemos a sintaxe e as sentenças utilizadas, podemos ver exemplos práticos de uso das estruturas de controle simples, composta e encadeada. Exemplo prático com a estrutura de controle simples Neste novo exemplo, vamos supor a seguinte situação: precisamos realizar a soma de dois números e devemos conferir se o resultado dessa soma será maior ou igual a 50. Se for maior, deverá retornar o valor da soma e, caso a condição não seja atendida, o programa deve encerrar sua execução. Primeiro, precisamos declarar variáveis para receber os valores que informaremos. O fluxograma mostrará como podemos solucionar esse problema (Figura 6). É importante ficar atento sobre a existência de diversas formas de solucionar o mesmo problema, portanto, os nossos exemplos não são as únicas maneiras de solução.46 Fluxo de estruturas de decisão Início Soma - Verdadeira Soma >=50 soma Falsa Figura 6. Fluxograma do exemplo prático da estrutura condicional simples. Acompanhando essa mesma ideia e utilizando as sentenças utilizadas no MATLAB, temos: numerol=input ('Insira o primeiro número que deverá ser numero2=input o segundo número que deverá ser ; if (soma>=50) da soma é: soma) end Não esqueça de que devemos sempre fazer uso de toda a sintaxe determi- nada pela linguagem de programação em que você estiver desenvolvendo o algoritmo. Aqui, estamos utilizando a linguagem aceita no MATLAB.Fluxo de estruturas de decisão 47 Exemplo prático com a estrutura de controle composta Como estamos avançando nas estruturas, vamos continuar com o mesmo exemplo, porém agora iremos utilizar a estrutura de controle composta. Te- remos de fazer a soma de dois valores, o que muda agora é que, ao invés de termos apenas a condição de que o valor obtido como resultado dessa soma seja maior ou igual a 50, vamos definir que caso essa condição seja aceita, o valor da soma deverá ser somado com 2; caso o valor somado não seja maior ou igual a 50, o valor da soma deve ser por 10. Assim como fizemos anteriormente, vamos mostrar primeiro o fluxograma deste algoritmo (Figura 7). Início Soma Falsa Verdadeira Soma >=50 Resultado soma+2 Resultado soma-10 soma Figura 7. Fluxograma do exemplo da estrutura condicional48 Fluxo de controle: estruturas de decisão Acompanhando essa mesma ideia e utilizando as sentenças utilizadas no MATLAB, temos: numerol-input primeiro número que deverá ser numero2=input segundo número que deverá ser : if (soma>=50) resultado = else resultado - end valor da soma é: resultado) Fazendo um comparativo das sentenças, você pode perceber que a impressão do resultado só será realizada após a análise da condição. Isso ocorre porque agiliza a exibição do resultado, já que não estaria errado inserir essa impressão dentro de cada instrução, mas a melhor prática é inserir depois. Exemplo prático com a estrutura de controle composta encadeada Agora, ainda teremos que fazer a soma de dois valores, o que muda é que, ao invés de termos apenas a condição de que o valor obtido como resultado dessa soma seja maior ou igual a 50, caso essa condição seja falsa, devemos conferir também se o resultado da soma é menor ou igual a 100. Caso seja, devemos 8 da soma, e caso não seja, devemos somar 8 com a soma. Porém, caso a primeira condição seja aceita, o valor da soma deverá ser somado com 2.Fluxo de controle: estruturas de decisão 49 A seguir, podemos acompanhar o fluxograma deste algoritmo (Figura 8). Verdadeira Falsa Resultado Verdadeira Falsa Resultado Resultado - Figura 8. Fluxograma do exemplo prático da estrutura condicional composta encadeada. Acompanhando essa mesma ideia e utilizando as sentenças utilizadas no MATLAB, temos: numerol=input ('Insira o primeiro número que deverá ser numero2=input o segundo número que deverá ser if (soma>=50) resultado = else if (soma50 Fluxo de controle: estruturas de decisão Referências CHAPRA, S. Métodos numéricos e aplicados com para engenheiros e 3. ed. Porto Alegre: AMGH, 2013. A. MAILAB com aplicações em engenharia. 4. ed. Porto Alegre: Bookman, 2012. PALM, W. J. Introdução MAILAB para 3. ed. Porto Alegre: AMGH, 2013. Leituras recomendadas ASCENCIO, A. F. CAMPUS, A. Fundamentos da Programação de Paulo: Pearson, 2012. FORBELLONE, A. Lógica de programação: a construção de algoritmos e estrutura de dados. 3. ed. São Paulo: Pearson, 2005. MANZANO, J. A. N. G.; OLIVEIRA, F. Algoritmos: lógica para desenvolvimento de programação de computadores. 28. ed. São Paulo: Érica, R. W. Conceitos de linguagens de programação. 9. ed. Porto Alegre: Bookman, 2011Estruturas de repetição Objetivos de aprendizagem Ao final deste texto, você deve apresentar os seguintes aprendizados: Analisar os algoritmos com estruturas de repetição "enquanto" e "repita" em pseudocódigo e linguagem MATLAB (while e for). Identificar problemas que necessitem de estruturas de repetição. Desenvolver algoritmos em pseudocódigo e linguagem MATLAB que necessitem estruturas de repetição na resolução de problemas. Introdução Durante a nossa rotina diária, acabamos executando certas atividades praticamente todos os dias, mesmo que seja de formas diferentes. Quer um exemplo? Todos os dias, ao acordar, você irá tomar café, tomar banho, escovar os dentes, entre outras atividades. Essa afirmativa está correta ou errada? Independentemente de sua resposta, sabemos que, para desempenharmos algumas funções, acabamos executando repetições até que essa função seja finalizada. Neste capítulo, você verá que, com os laços ou estruturas de repetição, ocorre o mesmo: certos trechos de código irão repetir sua execução até determinada de vezes ou até uma condição assumir o valor lógico falso, que é quando utilizamos a estrutura while-en ou quando definimos a quanti- dade de vezes que irá repetir, situação que exige o uso da estrutura for Estruturas de repetição: conceitos Durante o desenvolvimento de um software, deparamo-nos com um único objetivo, que é o de solucionar algum problema, o que significa que o software deve contribuir para automatizar alguma atividade, seja ela empresarial ou mesmo a realização de um simples cálculo de multiplicação. Acabamos lidando com a análise de diversas condições que são prees- tabelecidas para que, conforme sua adequação, as regras do programa as

Mais conteúdos dessa disciplina