IEC037 Introdução à Programação de Computadores Aula 03 – Estrutura Sequencial Turma: Professor: E-mail: Página: Ambiente virtual: Problema Inicial Como revestir uma das paredes de um banheiro, usando ferramentas e material fornecido? Definição de algoritmo Uma sequência finita e ordenada de passos sem ambiguidade que leva à resolução de um problema. Problema Inicial :: Solução 1 início Separar material necessário Preparar argamassa Assentar as pastilhas Fazer acabamento fim Problema Inicial :: Solução 2 início Comprar material necessário Contratar um pedreiro Esperar ficar pronto Pagar o pedreiro fim Existem várias maneiras de descrever uma solução algorítmica. Como descrever um algoritmo? Narrativa • O algoritmo é descrito em linguagem natural, que é abstrata, imprecisa e ambígua. Fluxograma • Representação gráfica, através de símbolos geométricos (retângulos, losangos, etc.), que enfatizam os passos individuais do algoritmo e suas interconexões. Pseudo-Código • Emprega uma linguagem intermediária entre a linguagem natural e uma linguagem de programação para descrever os algoritmos, usando um vocabulário mais restrito e sem ambiguidades. Fluxogramas Definição •Diagrama que utiliza símbolos para indicar a sequência de execução de um conjunto de comandos Outras denominações •Diagrama de blocos •Diagrama de fluxo Vantagem Desvantagem •Fácil leitura •Escrita trabalhosa Fluxogramas :: Simbologia início / fim ação leitura de dados Deve começar com um verbo Usado apenas quando a entrada não é conhecida. Se o valor for prédefinido, use o retângulo. saída Sentido do fluxo de execução Problema 2 Qual a área da parede do banheiro a ser revestida, se ela mede 4,4m de largura por 3,2m de altura? 3,2m 4,4m Processo de resolução de problemas algorítmicos Início 1 Identificar o problema 2 Definir as entradas e as saídas Decompor 3 Projetar o algoritmo 4 Converter o algoritmo em linguagem de programação 5 Testar solução Fim Refinar passo a passo Caracterização das Entradas e Saídas Para uma identificação completa das entradas e saídas de um sistema, devemos levantar as seguintes características: Nome da grandeza Unidade de medida Faixa de valores válidos Problema 2 Qual a área da parede do banheiro a ser revestida, se ela mede 4,4m de largura por 3,2m de altura? Grandeza Entradas Saídas Largura da parede Altura da parede Área da parede Unidade de medida Faixa de valores m 4,4m m 3,2m m² >0 Problema 2 :: Projetando a Solução Deve-se atribuir o valor 4,4 para a largura. Deve-se atribuir o valor 3,2 para a altura. Deve-se atribuir o produto da largura pela altura à área resultante: 𝐴=𝑏⋅ℎ Problema 2 :: Solução início largura ← 4,4 altura ← 3,2 área ← largura * altura Exibir área fim Variáveis e atribuições O que são variáveis no contexto algorítmico? Variáveis representam um espaço de memória onde se pode armazenar um valor. Memória altura 4,4 largura 3,2 Variáveis :: Características altura ← 3,2 Identificador Nome da variável Atribuição Comando que define ou redefine o valor de uma variável. Lê-se: “altura recebe 3,2” ou “atribuir 3,2 à altura” Valor Variáveis :: Analogia Variáveis podem ser vistas como gavetas de um armário onde cabe apenas um único valor início largura 4,4 7,8 largura ← 4,4 altura ← 3,2 altura 3,2 largura ← 7,8 fim Qual a relação com variáveis no contexto matemático? Matemática Algoritmos Variáveis podem assumir o valor de qualquer elemento de um conjunto. Variáveis podem assumir apenas um único valor de cada vez. Problema 3 Deseja-se revestir uma das paredes de um banheiro, que mede 4,7m × 2,9m, com pastilhas quadradas de 4cm de lado. Quantas pastilhas são necessárias? Lado da pastilha Largura da parede Altura da parede Unidade de medida cm m m nº de pastilhas -- Grandeza Entradas Saídas Faixa de valores 4cm 4,7m 2,9m >0 Problema 3 :: Projetando a Solução Número de pastilhas (𝑁): 𝑁= Área da parede Área da pastilha Parte inteira mais 1 Área da parede: 𝑙𝑎𝑟𝑔𝑢𝑟𝑎 ⋅ 𝑎𝑙𝑡𝑢𝑟𝑎 Área da pastilha: 𝑙𝑎𝑑𝑜 2 Como expressar essas operações aritméticas no fluxograma? Operadores Aritméticos São utilizados para realizar as operações aritméticas básicas. Operador + – * / // % ** Operação Exemplo Adição 1+y Subtração x–y Multiplicação 8*y Divisão real 7 / 2 (= 3,5) Divisão inteira 7 // 2 (= 3) Resto da divisão inteira 7 % 2 (= 1) Potenciação x ** 2 Operadores Aritméticos Entrada: 02 valores numéricos Saída: 01 valor numérico valor numérico valor numérico Operador Aritmético valor numérico Operadores Aritméticos :: Formato Operando1 Opera dor Operando2 Exemplos: 2a 2*a 5 a³ a ** 3 5 ** 0,5 Operadores Aritméticos :: Prioridade Prioridade 1 2 3 4 Exemplos: Operador Parênteses mais internos Potenciação Multiplicação, divisão, resto Adição, subtração 4 * 3 ** 2 36 (4 * 3) ** 2 144 4*5%3 2 4 * (5 % 3) 8 Da esquerda para a direita Na dúvida, use parênteses. Voltando ao Problema 3 Deseja-se revestir uma das paredes de um banheiro, que mede 4,7m × 2,9m, com pastilhas quadradas de 4cm de lado. Quantas pastilhas são necessárias? Lado da pastilha Largura da parede Altura da parede Unidade de medida cm m m nº de pastilhas -- Grandeza Entradas Saídas Faixa de valores 4cm 4,7m 2,9m >0 Problema 3 :: Solução Memória início largura ← 470 altura ← 290 lado ← 4 Todos na mesma unidade de medida! largura 470 altura 290 4 lado N 8519 N ← (largura * altura) // (lado ** 2) + 1 Exibir N fim Operadores Aritméticos Problema 4 Deseja-se revestir uma das paredes de um banheiro, que mede 5,2m × 3,2m, com pastilhas quadradas de 5cm de lado. As pastilhas são vendidas em caixas de 1000 unidades, que custam R$ 450,00 cada. Quanto vou gastar? Entradas Saídas Grandeza Lado da pastilha Unidade de medida cm Faixa de valores 5cm Largura da parede m 5,2m Altura da parede m 3,2m Nº pastilhas por caixa Unid./caixa 1000 Custo por caixa R$ R$ 450,00 Custo R$ >0 Problema 4 :: Projetando a Solução Reusamos solução do problema anterior: Número de pastilhas (𝑁) Custo Total (custoTotal): N custoTotal = ⋅ CustoUnit Qtde. de pastilha por caixa Parte inteira mais 1 Problema 4 :: Solução início largura ← 520 altura ← 320 lado ← 5 custoUnit ← 450,00 Memória largura 520 altura 320 lado custoUnit N ← (largura * altura) // (lado ** 2) N custoTotal custoTotal ← ((N // 1000) + 1) * custoUnit Exibir custoTotal fim 5 450,00 6656 3150,00 É possível generalizar a entrada? Nas soluções anteriores, os fluxogramas foram específicos aos problemas. Vamos generalizar o fluxograma utilizando um novo símbolo: Leitura de dados Problema 4 :: Solução generalizada início Ler largura Ler altura Ler lado Ler custoUnit N ← (largura * altura) // (lado ** 2) custoTotal ← ((N // 1000) + 1) * custoUnit Exibir custoTotal fim Problema 5 Um professor esqueceu de corrigir uma questão de uma prova. Agora, ele tem de somar um ponto à nota dos alunos. Qual algoritmo a ser adotado? Grandeza Unidade de medida Faixa de valores Entradas Nota --- 0 a 10 Saídas Nota --- 1 a 11 Problema 5 :: Solução bruta Memória início Ler notaInicial notaFinal ← notaInicial + 1 Exibir notaFinal fim notaInicial 6,2 notaFinal 7,2 Problema 5 :: Solução refinada início Memória Ler nota nota 5,2 Memória nota ← nota + 1 Exibir nota fim nota 6,2 Mesma variável em ambos os lados do operador atribuição início nota ← nota + 1 Verificar valor atual da variável “nota” Somar “nota” O que acontece? Armazenar resultado na mesma variável “nota” fim Problema 6 Qual o valor exibido pelo fluxograma abaixo? início A←5 B←3 B←B*A Exibir B fim Problema 6 :: Solução Qual o valor exibido pelo fluxograma abaixo? início A←5 B←3 B←B*A Exibir B fim Memória A 5 B 3 Memória A 5 B 15 Problema 7 Qual o valor exibido pelo fluxograma abaixo? início VAL1 ← 10 VAL2 ← 16 VAL3 ← VAL2 – VAL1 VAL3 ← VAL1 – VAL2 Exibir VAL3 fim Problema 7 :: Solução Qual o valor exibido pelo fluxograma abaixo? Memória início VAL1 ← 10 VAL2 ← 16 VAL3 ← VAL2 – VAL1 VAL3 ← VAL1 – VAL2 Exibir VAL3 fim VAL1 VAL2 VAL3 10 16 ? VAL1 VAL2 VAL3 10 16 6 VAL1 VAL2 VAL3 10 16 -6 Problema 8 Qual os valores exibidos pelo fluxograma abaixo? início PRIM ← 5 SEG ← PRIM TER ← SEG PRIM ← 8 Exibir PRIM, SEG, TER fim Problema 8 :: Solução Qual os valores exibidos pelo fluxograma abaixo? início PRIM ← 5 SEG ← PRIM TER ← SEG PRIM ← 8 Exibir PRIM, SEG, TER fim Memória PRIM SEG TER 5 ? ? PRIM SEG TER 5 5 ? PRIM SEG TER 5 5 5 PRIM SEG TER 8 5 5 Problema 9 Deseja-se calcular o perímetro de um triângulo retângulo. Conhece-se apenas as medidas dos catetos. O que há de errado na solução ao lado? início Ler C1 Ler C2 H ← (C1 ** 2 + C2 ** 2) ** 0,5 Exibir H fim Problema 9 :: Solução O problema a ser resolvido é a determinação do perímetro, e não da hipotenusa, que é apenas um passo intermediário. início Ler C1 Ler C2 H ← (C1 ** 2 + C2 ** 2) ** 0,5 P ← H + C1 + C2 Exibir P fim Referências bibliográficas Menezes, Nilo Ney Coutinho (2010). Introdução à Programação com Python. Editora Novatec. Farrer, Harry (2011). Algoritmos Estruturados, 3ª edição. Editora LTC. Forbellone, A. L. V.; Eberspächer, H. F. (2006) Lógica de Programação, 3ª edição. Pearson. HETLAND, Magnus Lie (2008). Beginning Python: From Novice to Professional. Springer eBooks, 2ª edição. Disponível em: http://dx.doi.org/10.1007/978-1-4302-0634-7. Dúvidas?