Introdução à Programação de Computadores 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 Existem várias maneiras de descrever uma solução algorítmica. Contratar um pedreiro Esperar ficar pronto Pagar o pedreiro fim
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 Outras denominações Vantagem Desvantagem 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 Fácil leitura Desvantagem Escrita trabalhosa
Fluxogramas :: Simbologia início / fim ação Deve começar com um verbo leitura de dados 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? 4,4m 3,2m
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 Refinar passo a passo Este slide serve para fazer a correspondência do diagrama de resolução de problemas gerais (D1) para o diagrama de resolução de problemas algorítmicos (D2). Em D1, três passos (Identificar alternativas, Selecionar melhor solução e Listar instruções) foram fundidos em um único passo (Projetar algoritmo), em D2, como mostra o retângulo explicativo verde. Além disso, foi introduzido um passo entre Listar instruções e Avaliar a solução, em D1, gerando o passo Converter algoritmo..., em D2, como mostra o retângulo explicativo verde-água. Obs.: a cor do retângulo Projetar algoritmo é a mistura dos RGB dos retângulos Identificar alternativas, Selecionar melhor solução e Listar instruções. Converter o algoritmo em linguagem de programação 4 5 Testar solução Fim
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 Unidade de medida Faixa de valores Entradas Largura da parede m 4,4m Altura da parede 3,2m Saídas Área da parede m² > 0 Grandeza Unidade de medida Faixa de valores Entradas Saídas
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 Variáveis e atribuições início largura ← 4,4 altura ← 3,2 Variáveis e atribuições área ← largura * altura Exibir área fim
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 4,4 3,2 altura largura
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 largura 4,4 7,8 altura 3,2 Variáveis podem ser vistas como gavetas de um armário onde cabe apenas um único valor início largura ← 4,4 altura ← 3,2 largura 4,4 7,8 largura ← 7,8 altura 3,2 fim
Qual a relação com variáveis no contexto matemático? Matemática Variáveis podem assumir o valor de qualquer elemento de um conjunto. Algoritmos 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? Grandeza Unidade de medida Faixa de valores Entradas Lado da pastilha cm 4cm Largura da parede m 4,7m Altura da parede 2,9m Saídas nº de pastilhas -- > 0 Grandeza Unidade de medida Faixa de valores Entradas Saídas
Problema 3 :: Projetando a Solução Número de pastilhas (𝑁): Área da parede: Área da pastilha: 𝑁= Área da parede Área da pastilha Parte inteira mais 1 Como expressar essas operações aritméticas no fluxograma? ? 𝑙𝑎𝑟𝑔𝑢𝑟𝑎⋅𝑎𝑙𝑡𝑢𝑟𝑎 𝑙𝑎𝑑 𝑜 2
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 Operador Aritmético valor numérico Operadores Relacionais
Operadores Aritméticos :: Formato Operando1 Operando2 Exemplos: Operadores Relacionais 2a a³ 5 2 * a a ** 3 5 ** 0,5
Operadores Aritméticos :: Prioridade 1 Parênteses mais internos 2 Potenciação 3 Multiplicação, divisão, resto 4 Adição, subtração Da esquerda para a direita Operadores Relacionais 4 * 3 ** 2 36 Na dúvida, use parênteses. (4 * 3) ** 2 144 Exemplos: 4 * 5 % 3 2 4 * (5 % 3) 8
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? Grandeza Unidade de medida Faixa de valores Entradas Lado da pastilha cm 4cm Largura da parede m 4,7m Altura da parede 2,9m Saídas nº de pastilhas -- > 0 Grandeza Unidade de medida Faixa de valores Entradas Saídas
N ← (largura * altura) // (lado ** 2) + 1 Problema 3 :: Solução Memória início largura ← 470 altura ← 290 lado ← 4 470 largura Todos na mesma unidade de medida! 290 altura 4 lado N ← (largura * altura) // (lado ** 2) + 1 8519 N Operadores Aritméticos Exibir N fim
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? Grandeza Unidade de medida Faixa de valores Entradas Lado da pastilha cm 5cm Largura da parede m 5,2m Altura da parede 3,2m Nº pastilhas por caixa Unid./caixa 1000 Custo por caixa R$ R$ 450,00 Saídas Custo > 0 Grandeza Unidade de medida Faixa de valores Entradas Saídas
Problema 4 :: Projetando a Solução Reusamos solução do problema anterior: Número de pastilhas (𝑁) Custo Total (custoTotal): custoTotal= N Qtde. de pastilha por caixa ⋅CustoUnit Parte inteira mais 1
Problema 4 :: Solução 520 320 5 450,00 6656 3150,00 início Memória largura ← 520 altura ← 320 lado ← 5 custoUnit ← 450,00 520 largura 320 altura 5 lado N ← (largura * altura) // (lado ** 2) 450,00 custoUnit 6656 N custoTotal ← ((N // 1000) + 1) * custoUnit 3150,00 custoTotal Exibir custoTotal fim
É 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 1 a 11 Grandeza Unidade de medida Faixa de valores Entradas Saídas
Problema 5 :: Solução bruta Memória início 6,2 Ler notaInicial notaInicial 7,2 notaFinal notaFinal ← notaInicial + 1 Exibir notaFinal fim
Problema 5 :: Solução refinada início Ler nota 5,2 nota Memória nota ← nota + 1 6,2 nota Memória Exibir nota fim
Mesma variável em ambos os lados do operador atribuição início Verificar valor atual da variável “nota” nota ← nota + 1 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 ← B * A Exibir B fim
Problema 6 :: Solução Qual o valor exibido pelo fluxograma abaixo? 5 3 Memória B início A ← 5 B ← 3 B ← B * A Exibir B fim 5 15 A Memória B
Problema 7 Qual o valor exibido pelo fluxograma abaixo? início VAL3 ← VAL2 – VAL1 VAL3 ← VAL1 – VAL2 Exibir VAL3 fim
Problema 7 :: Solução Qual o valor exibido pelo fluxograma abaixo? 10 16 VAL1 Memória VAL2 ? VAL3 início VAL1 ← 10 VAL2 ← 16 VAL3 ← VAL2 – VAL1 VAL3 ← VAL1 – VAL2 Exibir VAL3 fim 10 16 VAL1 VAL2 6 VAL3 10 16 VAL1 VAL2 -6 VAL3
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? 5 ? PRIM Memória SEG TER início PRIM ← 5 SEG ← PRIM TER ← SEG PRIM ← 8 Exibir PRIM, SEG, TER fim 5 PRIM SEG ? TER 5 PRIM SEG TER 8 5 PRIM SEG TER
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?